JohnDaniels
@JohnDaniels

Как обновить запись в Laravel?

Есть такая табличка
51f7cd3d325e4e49ac14efd124b83ffa.png

Модель:
class Result extends Eloquent
{
    protected $table = 'assets_to_users';
    protected $fillable = ['user_id', 'result'];

   public function asset()
   {
       return $this->hasOne('Application\Models\Asset', 'id', 'asset_id');
   }
}


И такой код:
$asset_id = 2;

Result::updateOrCreate(
                ['asset_id' => $asset_id],
                ['result' => 100]
            );


После чего табличка принимает такой вид:
207d1606643b42a6ab4a9d6b2a611f91.png

При том что
$model = Result::where('asset_id', '=', $asset_id)->first();
echo $model->id; //122


Почему обновляется не та строка?
  • Вопрос задан
  • 2070 просмотров
Пригласить эксперта
Ответы на вопрос 2
wielski
@wielski
✔ Совет: Вам помогли? Отметьте ответы решением.
Вы не правильно понимаете назначение функции updateOrCreate.
В вашем случае нужно получить экземпляр объекта Result, а после уже вносить в него изменения.

$model = Result::where('asset_id', '=', $asset_id)->first();
$model->result = 100;
$model->save();
Ответ написан
@Result007
P|-|P
У вас в $fillable = ['user_id', 'result'] разрешено изменение или добавление user_id, а вы пытаетесь обращаться к asset_id.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы