【问题标题】:Trying to get property of non-object in Laravel when attempting to delete row from datatable尝试从数据表中删除行时尝试在 Laravel 中获取非对象的属性
【发布时间】:2015-04-28 21:39:51
【问题描述】:

我想我知道错误发生的原因,但我不知道如何解决它。

我有一个数据表,每行都有一个编辑和删除按钮。该表包含正确的数据。当我按下一行的删除按钮时,我会将用户发送到删除确认视图。错误发生在删除视图中。

这是出错的那一行

<form id="deleteForm" class="form-horizontal" method="post" action="@if (isset($guestlist)){{ URL::to('entir/guests/' . $guestlist->id . '/delete') }}@endif" autocomplete="off">

我认为问题是由于 $guestlist 不是对象。

所以在控制器中我使用以下函数来获取数据

public function getData()
{
   $guestlists = Guestlist::select(array('guestlists.id',  DB::raw('CONCAT(guestlists.first_name, " ", guestlists.last_name) AS g_name'),'guestlists.start_date', 'guestlists.end_date', 'guestlists.notes', 'guestlists.vendor'));

   return Datatables::of($guestlists)->add_column('actions', '<a href="{{{ URL::to(\'entir/guests/\' . $id . \'/edit\' ) }}}" class="iframe glyphicon glyphicon-edit"> </a>
       <a href="{{{ URL::to(\'entir/guests/\' . $id . \'/delete\' ) }}}" class="glyphicon glyphicon-remove"> </a>                            
        ')
        ->remove_column('id')            
        ->make();
}

这里是调用删除视图的函数

public function getDelete($guestlist)
{       
       return View::make('site/entir/guests/delete', compact('guestlist'));

}

如果我在返回之前添加dd($guestlist);,我可以看到它不包含行数据。

例如,假设该行有名字、姓氏和一些其他字段。这一行的 id 是 10。当我查看 dd() 的输出时;我只看到这个

字符串“10”(长度=2)

我本来希望对象来宾列表和所有行数据。我不确定为什么会这样。我正在使用 laravel 入门网站 (https://github.com/andrewelkins/Laravel-4-Bootstrap-Starter-Site),并且我复制了作者使用删除按钮为他的数据表所做的操作。当我将dd(); 添加到他的删除用户函数时,我看到了他的对象和行数据......我很困惑。

谢谢

【问题讨论】:

    标签: php laravel datatable eloquent


    【解决方案1】:

    您的查询未获取任何数据。附加 ->get() 到它。

    Guestlist::select(array('guestlists.id',  DB::raw('CONCAT(guestlists.first_name, " ", guestlists.last_name) AS g_name'),'guestlists.start_date', 'guestlists.end_date', 'guestlists.notes', 'guestlists.vendor'))->get();
    

    http://laravel.com/docs/5.0/queries

    如果您需要数组中的结果,请附加 ->get()->toArray()。

    【讨论】:

    • 嗨戴夫,感谢您的评论。我应该提到这是 laravel 4.1。该查询确实返回数据并按照上面的编码填充数据表。但是,我确实尝试了您的两个建议,但表格停止填充。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-09-11
    • 1970-01-01
    • 1970-01-01
    • 2018-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多