试图在控制器中获取非对象的属性

时间:2014-06-23 13:31:40

标签: php laravel laravel-4 blade

这是我的控制器

public function show($restaurant_id)
{
    $data = Restaurant::find($restaurant_id)->waitingtimes();
    echo $data->first()->value; exit;

虽然Trying to get property of non-object模型已映射到具有waitingtime列的数据库表,但我得到value

你可以帮忙吗?另外,您能告诉我在哪里可以阅读有关函数返回类型的文档find()感谢

编辑1

数据不为空;我可以看到数据库,restaurant表的id为20,表等待时间的值为restaurant_20为20

3 个答案:

答案 0 :(得分:2)

实际上 - 更好的方法是将路线映射到模型。

所以在你的Routes.php文件中:

Route::model('restaurant', 'Restaurant');

Route::get('/restaurant/{restaurant}', ['as' => 'restaurant.show', 'uses' => RestaurantController@show]);

然后在您的控制器文件中:

public function show(Restaurant $restaurant)
{
    echo $restaurant->waitingtimes()->first()->value;
}

您可以阅读有关Route Model Binding here的更多信息。

答案 1 :(得分:0)

这里是find()的来源 https://github.com/laravel/framework/blob/master/src/Illuminate/Database/Eloquent/Model.php#L643

在这里你有文档

http://laravel.com/api/4.2/Illuminate/Database/Eloquent/Model.html#method_find

表示您的非对象错误,

你的$数据是空的,你应该在使用$ data collection

之前检查一下

答案 2 :(得分:0)

最后我自己找到了解决方案,即:

public function show($restaurant_id)
{
    $data = new Restaurant(array('id' => $restaurant_id));
    $data = $data->waitingtimes();
    echo $data->first()->value; exit;