2016-06-21 5 views
1

Я новичок в 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 должен работать

+0

и вы также можете reuturn $ obj-> найти ($ PrimaryKey) -> обновление ($ данных); не делая этого шаблона –

+0

, то что может быть лучшим решением для этого? –

ответ

0

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

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

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

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

не работает. –

1

Есть решение:

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