这是我的控制器
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()
感谢
数据不为空;我可以看到数据库,restaurant
表的id为20,表等待时间的值为restaurant_20
为20
答案 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;