此集合实例上不存在属性[***]

时间:2017-05-23 17:19:27

标签: laravel-5 eloquent slug

我尝试为网站做这个,但我的'hotel'表有'id'和'hotel_id'列。我听说eloquent在定义关系时将_id作为主键识别关联的表名。我如何定义与酒店评论的关系?我在我的酒店模特中试过这个

public function comments() { return $this->hasMany(Comments::class, 'hotel_id') }

这是我的页面控制器

public function hotelPage($hotel_id)
{
    $hotels = Hotel::select(
        'hotel.hotel_id'
        ,'hotel.name'
        ,'hotel.photo_url'
        ,'hotel.address'
        ,'hotel.desc_en'
        //,'hotel.hotel_url'
        ,DB::raw("(CASE WHEN
            COALESCE(hotel.hotel_url,'')!='' THEN
            LOWER(CONCAT(hotel.hotel_url,'?aid=*******'))
            ELSE
                CONCAT(hotel.hotel_url,'http://www.example.com/?aid=*******')

            END)
            as hotel_url"))
        ->where('hotel.hotel_id',$hotel_id)
        ->get();
    return view('hotel.hotelPage', ['hotels' => $hotels]);
}

当我加载视图时

@foreach($hotels->comments as $comment) {{$comment->body}} @endforeach

我收到错误“此集合实例上不存在Property [comments] ./ / /hotelPage.blade.php”

请帮忙,我正在使用laravel 5.4

0 个答案:

没有答案