LoginSignup
1
2

More than 5 years have passed since last update.

FuelPHPでmany_manyなリレーションを築く

Posted at

FuelPHPでmany_manyなリレーションを築く
has_oneとかとちょっと順準備が必要なのでめも。

公式
http://fuelphp.jp/docs/1.8/packages/orm/relations/many_many.html

バージョン情報
- FuelPHP 1.8
- PHP7.0.6

準備

「Model_Project」と「Model_User」を関連付ける
A user has many projects.
A project has many users.
なリレーションにするので多対多です。

Model_Project

リレーション情報をモデルクラスに追記。
関連付けるカラム名がFuelPHPの規則に従っていればカラム名の指定だけでできる。

protected static $_many_many = ['users'];

Model_User

同様

protected static $_many_many = ['projects'];

中間テーブルの作成

この作業だけsql文を手打ちしないといけない。びみょい

mysql -u my_name -my_password

use your_db_name;
CREATE TABLE IF NOT EXISTS `projects_users` (
    `project_id` int(11) NOT NULL,
    `user_id` int(11) NOT NULL,
    PRIMARY KEY (`project_id`,`user_id`)
);

リレーションを築く

普通に追加する。既に構築済みのリレーションがあっても重複登録されないので便利。

    $project = Model_Project::find(1);
    $project->users[] = Model_User::find(1);
    $project->save();

リレーションを破壊する

縁を切るときはnullを代入して保存。

    $user = Model_User::find(1);
    $user->project[0] = null;
    // $user->project = null;   # 全消し
    $user->save();
1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2