update () с find () в laravel не работает

Я новичок в Laravel, я столкнулся с проблемой при создании общей функции обновления,

код 1: это не работает

if ($obj->find($primaryKey)->update($data)){
return TRUE;
}
else
return FALSE;

код 2: но если я попробовал это, это работает:

if ($obj->where("candidate_id", $primaryKey)->update($data)){
return TRUE;
}
else
return FALSE;

я хочу, чтобы код 1 работал

1

Решение

Получил решение:

if ($obj->where($obj->getKeyName(), $primaryKey)->update($data)){
return TRUE;
}
else
return FALSE;
1

Другие решения

Я собираюсь сделать обоснованное предположение, что, поскольку Laravel ожидает, что первичный ключ будет id и вы используете candidate_id что вам нужно установить $primaryKey свойство вашей модели соответственно.

class Candidate extends Model {
protected $primaryKey = 'candidate_id';
}

Вы также можете проверить, чтобы убедиться, find() находит что-то до совершения обновления, чтобы избежать ошибок.

if ($object = $obj->find($primaryKey)) {
$object->update($data);
}
0

По вопросам рекламы [email protected]