2015-04-22 1 views
2

Я реплицирую строку базы данных и хочу вернуть новую строку в качестве объекта.Извлечение объекта из реплицируемой строки с помощью Laravel/Eloquent

$new_foo = Foo::find($id)->replicate()->save(); 
print_r($new_foo); 

Это возвращает 1 вместо нового объекта, который я только что создал. Мысли?

ответ

4

В вашем коде вы фактически сохраняете значение, возвращаемое методом save(), а не реплицированную модель.

Вам нужно сделать небольшое изменение в код, чтобы сохранить реплицированную модель в $new_foo

$new_foo = Foo::find($id)->replicate(); 
$new_foo->save(); 
dd($new_foo); 

save() метод возвращает boolean.

+0

Знаете ли вы, почему это должно быть на новой линии? Я знал это раньше, но я не вижу, чтобы в документах говорилось, почему это должно быть так. – joeyfb

+1

@JoeyB потому что '' replicate() '' метод возвращает созданный объект, а '' save() '' метод возвращает '' boolean''. –

+0

Это кажется немного контр-интуитивным. Благодаря! – americanknight