0

我坚持使用 Laravel(也是新手),阅读了多对多关系文档,但仍然无法找出我的问题。

我有一个模型公司,看起来像:

class Company extends Eloquent 
{
  public static $timestamps = true;

  public function owner()
  {
    return $this -> belongs_to('User', 'owner_id');
  }

  public function users()
  {
    return $this -> has_and_belongs_to_many('User', 'company_users');
  }
}

另外,我有一个看起来像这样的模型用户:

class User extends Eloquent
{
  public static $timestamps = true;

  public function companies() 
  {
    return $this -> has_and_belongs_to_many('Company');
  }
}

我有一个用户保存到 ID 为 1 的数据库中,所以我这样做了

  $user = User::find(1);
  var_dump($user -> companies() -> get());

  $company = new Company();
  $company -> name = 'name';
  $company -> owner_id = $user -> id;

  $company -> save();

问题是,如何将所有者保存在公司的 users() 中?

谢谢!

4

2 回答 2

3

保存公司后,将用户附加到它,如下所示:

$company->users()->attach($user->id);

这将确保$user->id被添加到company_users表中$company->id

于 2013-04-22T00:35:27.653 回答
1

“问题是,我如何将所有者保存在公司的 users() 中?”

您拥有的是两个需要保持同步的独立关系。我会在 Company 模型上重载 save 方法,这样当 user_id(所有者)更改时,新的所有者 id 会添加到用户关系中。

// Something like this, untested, etc...
public function save()
{
    parent::save();

    if ( $this->changed( 'user_id' ) )
    {
        $this->users()->attach( $this->user_id );
    }
}
于 2013-04-22T21:27:56.993 回答