Laravel Eloquent Relationships没有结果

时间:2017-10-31 20:51:52

标签: laravel relationship laravel-eloquent

我很难找到我在这里做错了什么。我有两张桌子: 表1:状态(id,名称) 表2:城市(id,name,state_id)

一个州有许多城市,一个城市属于一个州。

我宣布这样的模型:

c:\Users\<username>\

如果我试图获得一个州并列出城市,那么在Tinker中,我只能找到一条线作为答案。

class City extends Model
{
    protected $connection = 'pgsql';
    protected $table = 'city';

    public function state(){
        return $this->belongsTo('App\State');
    }

}

class State extends Model { 
    protected $connection = 'pgsql'; 
    protected $table = 'state'; 

    public function cities(){ 
        return $this->hasMany('App\City','state_id','id'); 
    } 
}

给我:

$state_1 = App\Estado::find(1);
$state_1->cities();

更新:

我刚刚做了修改而且有效! 但是我可以通过show方法从CityController获得结果:

Illuminate\Database\Eloquent\Relations\HasMany

没有结果!

2 个答案:

答案 0 :(得分:1)

第一个问题是:

$state_1->cities 

对于更新的问题,请执行以下操作:

City::with('state')->get(); /* the ->where('state_id',$id); shouldn't be 
                             * required as you've already declared the relationship                     
                             */

这可能会解决您的问题。如果在您的Eloquent查询中没有定义get(),它将不返回任何内容。

答案 1 :(得分:0)

你需要做

$state_1->cities;

没有parenteses,获取实际的关系数据,而不是关系对象。

您可以阅读更多here