0

Я новичок. Я пытаюсь исправить, я думаю, мне нужна помощь.Пытается получить свойство не-объекта laravel?

-Этот это код контроллера

  if(Input::hasFile('image')){ 

      $dest = 'media/images/product/'; 

      $name = str_random(6).'_'.Input::file('image')->getClientOriginalName(); 

      //$resize = 
      Input::file('image')->move($dest,$name); 
     } 

     $loaispname = Input::get('loaispname'); 

     $loaisp = new Loaisp; 


     $datas = $loaisp->getidloaisp($loaispname); 

     $idloaisp = $datas->id; 

     $item = new Sanpham; 
     $item->loaisp_id = $idloaisp; 
     $item->sanpham_name = Input::get('sanpham'); 
     $item->sanpham_img = $name; 
     $item->sanpham_tieude = Input::get('tieude'); 
     $item->sanpham_gia = Input::get('gia'); 
     $item->sanpham_chitiet = Input::get('chitiet'); 
     $item->sanpham_vitri = Input::get('vitri'); 
     $item->save(); 

     return Redirect::to('admin/dsachsanpham')->with('thanhcong','Saved'); 

-Этот это код модели

public function getidloaisp($loaispname){ 

     //return Loaisp::where('loaisp_name','=',$loaispname)->get(); 
     return DB::table('loaisp')->where('loaisp_name',$loaispname)->first(); 
    } 

-это это ошибка

ErrorException (E_UNKNOWN) Попытка получить свойство необъектных Открыть: E: \ xampp \ htdocs \ www \ daunhot \ app \ controllers \ AdminController.php

 $loaispname = Input::get('loaispname'); 

     $loaisp = new Loaisp; 


     $datas = $loaisp->getidloaisp($loaispname); 

     $idloaisp = $datas->id; // This is error 

     $item = new Sanpham; 
+1

Вы уверены, что ваш запрос покажет результаты? Попробуйте использовать 'dd ($ datas)' перед линией ошибки. – Jerodev

ответ

1

Когда вы видите эту ошибку, может быть две ошибки: у вас ничего нет с вашим запросом (DB :: table ('loaisp') -> где ('loaisp_name', $ loaispname) -> first();), Или вы вернули массив, если вы используете -> get() вместо -> first(), вы получите эту ошибку. Попробуйте использовать foreach в результатах запроса или попытайтесь использовать функцию dd() для вашего результата, чтобы вы могли видеть, пуст или нет. Если он пуст, это ваша эмблема.

1

Как и все остальное, дамп $ datas перед ошибкой, возможно добавьте '=' к вашему предложению where в этой функции getidloaisp. Вы должны использовать тот, который вы указали, хотя, если вы измените '-> get()' на '-> first()'.

1

Проверьте, если вы получаете «loaispname» на входе :: както:

echo "<pre>"; 
print_r($loaispname); 
echo "</pre>"; 
exit; 

Если вы получаете ваши отправленные данные, то сделать:

echo "<pre>"; 
print_r($datas); 
echo "</pre>"; 
exit; 
0

$datas->id работа с БД таблицы должна быть таблица datas и ячейка id, а также они чувствительны к регистру, а не использовать Id или другие.