试图获得非物体laravel的属性?

时间:2014-11-27 05:52:30

标签: laravel laravel-4 laravel-routing laravel-5 laravel-validation

我是初学者。 我正在努力解决,我想我需要帮助。

- 这是代码控制器

         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;

4 个答案:

答案 0 :(得分:1)

当你看到这个错误时,可能会出现两个错误:你的查询没有任何回复(DB :: table('loaisp') - > where('loaisp_name',$ loaispname) - > first(); ),或者你得到了一个数组,如果你使用 - > get()而不是 - > first()你会得到这个错误。 尝试在查询结果中使用foreach,或尝试在结果上使用dd()函数,以便查看是否为空。如果它是空的那是你的问题。

答案 1 :(得分:1)

与其他人说的相同,在错误之前转储$ datas,可能会添加' ='你那里的那个条款' getidloaisp'功能。你应该可以使用你引用的那个,也就是说你改变了' - > get()'到' - >第一个()'。

答案 2 :(得分:1)

检查输入:: get by:

是否收到'loaispname'
echo "<pre>";
print_r($loaispname);
echo "</pre>";
exit;

如果您要获取发布的数据,请执行以下操作:

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

答案 3 :(得分:0)

$datas->id使用数据库表需要是表datas和单元格id,并且它们区分大小写,不使用Id或其他。