我试图获得一个雄辩的模型及其关系的一些特定领域。我的酒店表与城市相关
// Hotel model
public function City() {
return $this->belongsTo('App\City');
}
在控制器中
data = Hotel::where('name', 'LIKE', "%$keyword%")
->with( array( 'city' => function($query){
$query->select('cities.description');
})
)
->get(array('hotels.id', 'hotels.name', 'hotels.description as desc'));
它将city字段返回为null
{
id: 3
name: "hotel one"
desc: "lorem ipsum"
city: null
},
{
id: 4
name: "hotel two"
desc: "lorem ipsum"
city: null
}
如果我使用get()而不是get参数,则返回city参数。我是以错误的方式做的吗?
答案 0 :(得分:0)
您可以简单地执行以下操作。我不认为在现代硬件上只选择一个字段会有显着的性能提升。
$hotel = Hotel::where('name', 'LIKE', "%$keyword%")->first();
echo $hotel->id;
echo $hotel->name;
echo $hotel->description;
echo $hotel->city->description;
<强>更新强>
如果您想选择字段
,请尝试以下操作$posts = Hotel::where('name', 'LIKE', "%$keyword%")
->with(array('city' => function($query)
{
// Notice that you add either the primary key or the
// foreign key to the field list, or else Laravel
// won't be able to link the models together!
$query->addSelect(array('id', 'description'));
}))
->get(array('hotels.id', 'hotels.name', 'hotels.description as desc'));
答案 1 :(得分:0)
我找到了问题。我必须从酒店获得外键[self.navigationController popViewControllerAnimated:YES/NO]
。
city_id
对于像国家和州laravel这样的其他模型正在合并模型而没有指定外键。对于cities表,默认外键函数不起作用。