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 работал

2 ответа

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

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

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

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

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

if ($object = $obj->find($primaryKey)) {
    $object->update($data);
}
Другие вопросы по тегам