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');
  }
}

また、次のようなモデル User があります。

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() 内に所有者を保存するにはどうすればよいですか?」

あなたが持っているのは、同期を保つ必要がある 2 つの別々の関係です。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 に答える