Таким образом, в основном ошибка гласит, что у меня нет столбца с именем updated_at, но я знаю, что у меня его нет, и я не хочу его иметь. В моей таблице базы данных есть только следующие столбцы: запрашивающий, user_requested, id, статус.
это моя модель
class Friendships extends Model
{
protected $fillable = ['requester', 'user_requested', 'status'];
}
это мой профильконтроллер
public function sendRequest($id){
return Auth::user()->addFriend($id);
}
А это мой friendable.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 не найден, и создание не работает, по-видимому, потому, что идентификатор не найден.
По умолчанию 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
А теперь проверьте, работает ли он.
это сработало, спасибо! но теперь он показывает эту ошибку: Общая ошибка: 1364 Поле «статус» не имеет значения по умолчанию (SQL: вставить в значения friendships
(requester
, user_requested
) (1, 1))
Если вы хотите установить status
как нулевое значение, если ничего не установлено, вам необходимо создать новый сценарий миграции, чтобы изменить этот столбец, чтобы установить нулевое значение, если не установлено какое-либо значение. Вот документ для столбца изменения. Я внес изменения в ответ. Теперь проверьте.
но мой статус логический
Laravel автоматически попытается установить значение для полей created_at
и updated_at
. Настоятельно рекомендуется иметь их, однако, если вы не хотите, вы можете отключить их в своей модели.
Для этого просто добавьте public $timestamps = false;
к модели. Например:
class Friendships extends Model
{
public $timestamps = false;
protected $fillable = ['requester', 'user_requested', 'status'];
}
это сработало, спасибо! но теперь он показывает эту ошибку: Общая ошибка: 1364 Поле «статус» не имеет значения по умолчанию (SQL: вставить в значения дружбы (заявитель, пользователь_запрошено) (1, 1)
Попробуйте
public $timestamps = false;
в модели и проверьте