Laravel / Eloquent有很多没有外键的关系

时间:2015-04-07 15:25:00

标签: laravel orm eloquent has-many multiple-databases

我有一个与另一个(Client_option)具有hasMany关系的模型(Client)。

这两个表位于不同的数据库中(因此有一个客户端列表,然后每个客户端都有自己的数据库,其中包含一个选项表)。

在我的Client类中,我希望我的options()方法返回选项表的全部内容(它知道要查找哪个客户端数据库)。因为它是一个错误,因为选项表中不存在列client_id。我当然可以创建该列并使用客户端ID填充每一行,但我只是这样做以保持Eloquent的快乐,所以宁愿避免那种混乱。

提前感谢任何输入!

杰夫

1 个答案:

答案 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();
}