我有3张桌子:hotels, hotels_data, hotels_types
表hotels
有id, 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');
}
}
答案 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');