Вопрос:

Laravel: UpdateOrCreate об отношениях?

php laravel-5 eloquent

2342 просмотра

3 ответа

4580 Репутация автора

У пользователя есть одна машина.

пользователи

id | name
1  | Bob
2  | Alice

машины

idMember |  color  |  energy
   1     |  blue   |    0.95

Внутри класса пользователя у меня есть

public function car()
{
  return $this->hasOne('App\Car','idMember');
}

Я хочу вызвать updateOrCreate для модели отношения следующим образом:

$user->car()->updateOrCreate(['idMember' => $user->id], ['color' => 'red', 'energy' => '0.1']); 

Тем не менее, я получаю сообщение об ошибке

"SQLSTATE [42S22]: Столбец не найден: 1054 Неизвестный столбец 'id' в 'предложении where' (SQL: update carsset color= red, energy= 0.1, updated_at= 2018-01-12 15:26:47 где idnull)

Почему он ищет

id нулевой

?

Автор: Adam Источник Размещён: 12.01.2018 03:36

Ответы (3)


1 плюс

527 Репутация автора

Ваша модель автомобиля должна иметь первичный ключ, обычно называемый «id». Создать это.

Автор: Matteus Barbosa Размещён: 12.01.2018 03:41

1 плюс

4580 Репутация автора

Решение

Вот как я решил свою проблему, не добавляя ненужный идентификатор автоинкремента к модели автомобилей:

class Car extends Model
{

  protected $primaryKey   = 'idMember';
  public    $incrementing = false;
Автор: Adam Размещён: 12.01.2018 03:46

-1 плюса

716 Репутация автора

В вашей модели укажите primaryKey, если primarykey не является "ID"

protected $primaryKey = "Your Primary Key";

Если вам не нужно указывать первичный ключ

public    $incrementing = false;

Это оно ..

Автор: Raza Rafaideen Размещён: 21.05.2018 12:32
Вопросы из категории :
32x32