簡體   English   中英

在Laravel上具有has_and_belongs_to_many

[英]has_and_belongs_to_many on Laravel

我迷上了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()內部?

謝謝!

保存公司后,將用戶附加到該公司,如下所示:

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

這將確保將$user->id$company->id添加到company_users表中

“問題是,如何將所有者保存在公司的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 );
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM