我有3个表:applications
,countries
,suppliers
:
应用
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
关系?如果是的话,我做错了什么?或者我应该选择不同的方式/关系?
答案 0 :(得分:1)
在你的控制器中试试这个:
public function countries() {
$apps = $this->applications;
$countries = array();
foreach ($apps as $app) {
$countries[] = $app->country;
}
return $countries;
}