2014-06-08 4 views
12

У меня есть модель страницы. Он имеет следующие столбцы в таблице базы данных:Как обновить значение столбца в laravel

  • ID
  • название
  • изображение
  • тело

Я хочу обновить только "изображение" значение столбца.

Вот мой код:

public function delImage($path, $id) { 
    $page = Page::find($id); 
    $page->where('image', $path)->update(array('image' => 'asdasd')); 
    \File::delete($path); 
} 

он бросает мне ошибку, что я пытаюсь использовать, где() на не-объект. Как я могу правильно обновить значение столбца «изображение»?

ответ

13

Вы можете попробовать это:

Page::where('id', $id)->update(array('image' => 'asdasd')); 

Есть и другие способы тоже, но нет необходимости использовать Page::find($id); в этом случае. Но если вы используете find(), то вы можете попробовать это так:

$page = Page::find($id); 

// Make sure you've got the Page model 
if($page) { 
    $page->image = 'imagepath'; 
    $page->save(); 
} 

Также вы можете использовать:

$page = Page::findOrFail($id); 

Таким образом, он будет бросать исключение, если модель с таким идентификатором не найден.

+0

$ страница = страница :: найти ($ ID); $ page-> image = 'imagepath'; $ page-> save(); Это не работает, это порождает ошибку: «Создание объекта по умолчанию из пустого значения» – Heihachi

+0

У вас нет поля «image» в модели «Страница» и убедитесь, что вы получаете «объект/модель» в '$ page', когда вы используете' $ page = Page :: find ($ id) ', поэтому' $ page = Page :: find ($ id); if ($ page) {$ page-> image = 'imagepath'; $ PAGE-> Save(); } ' –

+0

У меня есть поле изображения, не нужно ли упоминать все остальные поля, чтобы успешно сохранить мою страницу? – Heihachi

0

Версия 1:

// Update data of question values with $data from formulay 
$Q1 = Question::find($id); 
$Q1->fill($data); 
$Q1->push(); 

Версия 2:

$Q1 = Question::find($id); 
$Q1->field = 'YOUR TEXT OR VALUE'; 
$Q1->save(); 

В случае отвеченный вопрос вы можете использовать их:

$page = Page::find($id); 
$page2update = $page->where('image', $path); 
$page2update->image = 'IMGVALUE'; 
$page2update->save(); 
+0

Хотя этот фрагмент кода может решить вопрос, [включая объяснение] (// meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers) действительно помогает для улучшения качества вашей должности. Помните, что вы отвечаете на вопрос читателей в будущем, и эти люди могут не знать причин вашего предложения кода. Также попробуйте не толковать код с пояснительными комментариями, что уменьшает читаемость кода и объяснений! –

Смежные вопросы