我有一个与另一个(Client_option)具有hasMany关系的模型(Client)。
这两个表位于不同的数据库中(因此有一个客户端列表,然后每个客户端都有自己的数据库,其中包含一个选项表)。
在我的Client类中,我希望我的options()方法返回选项表的全部内容(它知道要查找哪个客户端数据库)。因为它是一个错误,因为选项表中不存在列client_id。我当然可以创建该列并使用客户端ID填充每一行,但我只是这样做以保持Eloquent的快乐,所以宁愿避免那种混乱。
提前感谢任何输入!
杰夫
答案 0 :(得分:3)
这将允许您将其作为关系使用,将其称为动态属性$user->options
,使用push
方法进行批量保存等等:
public function options()
{
// it will use the same connection as user model
$options = ClientOption::on($this->getConnectionName())->get();
// if options model has its own, then simply
// $options = ClientOption::get();
$this->setRelation('options', $options);
return $options;
}
public function getOptionsAttribute()
{
return (array_key_exists('options', $this->relations))
// get options from the relation, if already loaded
? $this->getRelation('options')
// otherwise call the method and load the options
: $this->options();
}