Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/270.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel空查询_Php_Laravel - Fatal编程技术网

Php Laravel空查询

Php Laravel空查询,php,laravel,Php,Laravel,我有3个表:hotels,hotels\u data,hotels\u type 表酒店有id、类型、星级等类型字段在酒店类型中设置为外键引用类型id。我正在设法从hotels\u data获取正确的数据,但在获取hotels\u type标题时,结果为空,我不明白为什么 代码如下: class Hotel extends Eloquent { public function getList() { $data = Hotel::select('id','stars

我有3个表:
hotels,hotels\u data,hotels\u type

酒店
id、类型、星级等<代码>类型
字段在
酒店类型
中设置为外键引用
类型id
。我正在设法从
hotels\u data
获取正确的数据,但在获取
hotels\u type
标题时,结果为空,我不明白为什么

代码如下:

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');
    }

}

您对HotelType()使用了错误的关系

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

以下方面应起作用:

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

我通过以下几点获得了预期的结果:

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

谢谢你的贡献。我在发布之前也尝试过,但结果仍然是空的。我使用leftJoin()帮助器并指定tables.columns(而不是上述方法)找到了一个解决方案。它(可能)不适用于hasOne和belongsTo,因为types.table中没有与hotel直接相关的id列。id@Kyobul还值得注意的是,您的关系方法应该是camelcase(HotelType()应该是HotelType(),HotelData()应该是HotelData())。否则,调用$hotel->hotel_type将返回null谢谢Tony,并记下它