一些默认的雄辩关系?

时间:2016-11-24 11:41:30

标签: laravel laravel-5.2

我有3个表:applicationscountriessuppliers

应用

id
id_supplier
id_country

国家:

id

供应商:

id

所以我需要的是让给定供应商的所有countries开发一个应用程序。

我尝试手动利用应用程序模型和供应商模型的方法:

Application.php(模型):

...
public function country() {
    return $this->belongsTo('App\Country', 'id_country');
}
...

Supplier.php(型号):

...
public function applications() {
    return $this->hasMany('App\Application', 'id_supplier');
}
public function countries() {
    $apps = $this->applications()->get();
    $countries = array();
    foreach ($apps as $app) {
        $countries[] = $app->country;
    }
    return $countries;
}

让我摆脱了错误:

  

关系方法必须返回类型为Illuminate \ Database \ Eloquent \ Relations \ Relation

的对象

我也尝试过供应商模型:

...
$this->hasManyThrough('App\Country', 'App\Application', 'id_country', 'id_supplier');
...

找不到列counties.id_supplier(显然),这是否可以使用hasManyThrough关系?如果是的话,我做错了什么?或者我应该选择不同的方式/关系?

1 个答案:

答案 0 :(得分:1)

在你的控制器中试试这个:

public function countries() {
    $apps = $this->applications;
    $countries = array();
    foreach ($apps as $app) {
        $countries[] = $app->country;
    }
    return $countries;
}