EloquentでのBuilderで質問です。
例えば以下の様なテーブルがあるとします。
記事
POSTテーブル
ID | NAME |
---|---|
1 | 記事1 |
2 | 記事2 |
3 | 記事3 |
記事カテゴリー
POST_CATEGORYテーブル
POST_ID | CATEGORY_ID |
---|---|
1 | 1 |
1 | 2 |
1 | 3 |
2 | 2 |
3 | 3 |
以下クエリ文
create table POST_CATEGORY(
POST_ID INT not null
, CATEGORY_ID INT not null);
create table POST(
ID INT not null
, TITLE VARCHAR (100)
, constraint POST_PKC primary key (ID)
);
INSERT
INTO POST(ID, TITLE)
VALUES (1, '記事1')
, (2, '記事2')
, (3, '記事3');
INSERT
INTO POST_CATEGORY(POST_ID, CATEGORY_ID)
VALUES (1, 1)
, (1, 2)
, (1, 3)
, (2, 2)
, (3, 3);
記事に対して、記事カテゴリーを複数持てるようなデータの持ち方をしています。
記事検索画面で、カテゴリーを複数選択できるチェックボックスを配置して検索した場合に、
選択したカテゴリーのみが紐づく、検索結果を取得したいです。
条件
①記事に紐づくカテゴリー総数
②検索条件で選択されたカテゴリーと紐づく「POST_CATEGORY」の「POST_ID」毎の総数
①と②が一致することが条件となります。
例
カテゴリーIDを[1,2,3]を選択 => [記事1]のみが取得できる。
カテゴリーIDを[2]を選択 => [記事2]のみが取得できる。
カテゴリーIDを[3]を選択 => [記事3]のみが取得できる。
上記の様な実装を行いたい場合は、EloqentのBuilderではどのように指定すればよろしいのでしょうか。
PHP
1class Post extends Model{ 2 3 protected $table = "POST"; 4 5 protected $primaryKey = "ID"; 6 7 public $incrementing = false; 8 9 public function categories(){ 10 return $this->hasMany(PostCategory::class, "POST_ID"); 11 } 12 13} 14 15class PostCategory extends Model{ 16 17 protected $table = "POST_CATEGORY"; 18 19 protected $primaryKey = "ID"; 20 21 public $incrementing = false; 22 23}
回答1件
あなたの回答
tips
プレビュー