Так что в основном ошибка говорит о том, что у меня нет столбца с именем updated_at, но я знаю, что у меня его нет, и я не хочу его иметь. Моя таблица базы данных имеет только следующие столбцы: requestter, user_requested, id, status.

Это моя модель

class Friendships extends Model
{
    protected $fillable = ['requester', 'user_requested', 'status'];
}

Это мой профиль-контроллер

 public function sendRequest($id){
        return Auth::user()->addFriend($id);

  }

И это мой friendlyable.php


namespace App\Traits;
use App\Friendships;

trait Friendable{
    public function test(){
        return 'hi' ;
    }

    public function addFriend($id){
        $Friendship = Friendships::create([
                'requester' => $this->id,
                'user_requested' => $id
        ]);


        if($Friendship){
            return $Friendship;
        }
        return  'failed';
    }


}

Он говорит, что метод addFriend не найден, а create не работает, очевидно, потому что id не найден.

2
Diogo Cruz 28 Май 2019 в 13:55

2 ответа

Лучший ответ

По умолчанию Eloquent ожидает, что в ваших таблицах будут столбцы created_at и updated_at. Если вы не хотите, чтобы Eloquent автоматически управлял этими столбцами, установите для свойства $timestamps вашей модели значение false:

class Friendships extends Model
{
    public $timestamps = false;
    protected $fillable = ['requester', 'user_requested', 'status'];
}  

< Сильный > ИЗМЕНИТЬ

Пожарные команды,

php artisan make:migration modify_friendships_table;

Затем перейдите к файлу миграции, который создан в database/migrations

Написать код в этом классе,

Schema::table('friendships', function (Blueprint $table) {
    $table->boolean("status")->default(0)->change();
});

Сохранить файл выше, затем запустить команду ниже

php artisan migrate

А теперь проверьте, работает ли он.

3
Rahul 28 Май 2019 в 11:29

Laravel автоматически попытается установить значение для полей created_at и updated_at. Настоятельно рекомендуется иметь их, однако, если вы не хотите, вы можете отключить их на своей модели.

Для этого просто добавьте public $timestamps = false; в модель. Например:

class Friendships extends Model
{
    public $timestamps = false;
    protected $fillable = ['requester', 'user_requested', 'status'];
}
0
George Hanson 28 Май 2019 в 10:58