我有两种型号国家和州。 它们之间的关系如下: 国家:
public function States()
{
return $this->hasMany('App\State');
}
州:
public function Country()
{
return $this->belongsTo('App\Country');
}
现在,我想要在show方法中获取属于该国家/地区的状态。
public function show(Country $country)
{
$states = $country->States()->get();
dd($states);
}
但是,这里会抛出一个错误:
SQLSTATE [42S22]:找不到列:1054未知列' states.country_id'在' where子句' (SQL:从states
中选择{states
。country_id
= 11和states
。country_id
不为空)
country_id不存在是正确的,因为它被命名为countries_id 因为国家/地区的表格名称是国家/地区。
请帮助解决此错误。
答案 0 :(得分:1)
将外键添加到关系定义中:
return $this->hasMany('App\State', 'countries_id');
https://laravel.com/docs/5.5/eloquent-relationships#one-to-many
答案 1 :(得分:1)
您的foreign key
不匹配,请在second
函数中将外键列添加为relationship
参数。
public function States()
{
return $this->hasMany('App\State','countries_id');
}
按convention
,Eloquent获取拥有模型的"snake case"
名称,suffix
将_id
作为foreign key
作为country_id
。这就是它countries_id
而不是func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
return nil
}
的原因。