Laravel渴望关系空查询

时间:2014-02-06 22:43:45

标签: php laravel

我有3张桌子:hotels, hotels_data, hotels_types

hotelsid, type, stars等,type字段设置为type_id中的外键引用hotels_types。我正在设法从hotels_data获取正确的数据,但获得hotels_types标题时结果为空,我不明白为什么。

代码如下:

class Hotel extends Eloquent { 

    public function getList() {

        $data = Hotel::select('id','stars')->with('HotelData', 'HotelType')->paginate(10);

        return View::make('hotels.index')->with('hotels', $data);
    }

    public function HotelData()
    {
        return $this->hasOne('HotelsData')->select('id','hotel_id','title');
    }

    public function HotelType()
    {
        return $this->hasOne('HotelType','type_id', 'type')->select('id','type_id','title');
    }

}

2 个答案:

答案 0 :(得分:0)

您对HotelType()

使用了错误的关系

您的酒店模型应使用hasOne的倒数,即belongsTo,因为它包含HotelType的外键(当表包含外键时,它始终属于指向的表)。

以下内容应该有效:

public function hotelType() {
  return $this->belongsTo('HotelType','type', 'type_id')->select('id','type_id','title');
}

答案 1 :(得分:0)

我通过以下方式获得了所需的结果:

Hotel::select('hotels.*','hotels_types.title as type')
    ->join('hotels_types', 'hotels.type', '=', 'hotels_types.type_id')
    ->with('HotelData');