在laravel中获取特定的相关模型字段

时间:2015-06-25 06:20:44

标签: laravel laravel-5

我试图获得一个雄辩的模型及其关系的一些特定领域。我的酒店表与城市相关

// 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参数。我是以错误的方式做的吗?

2 个答案:

答案 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表,默认外键函数不起作用。