サイバーセキュリティを勉強していく漢

前回の記事に引き続きfind->()where->

cakephp4distinctgetAssociationphpsub_querywhere

さらに2日くらい詰まった

やりたかったのは

Table_aTable_bTable_c
a_idb_idc_id
a_data1b_data1a_id
a_data2b_data2b_id

Table_bのb_idをGETで取得し、Table_cでb_idに関連付けられたa_idから、Table_aのデータを取得する。

その際、取得したTable_aデータの重複をなくすこと。

サブクエリーを使用することで解決できた。

サブクエリー

$sub_query = $this->Table_a->getAssociation(“Table_c”)->find()

->select([“a_id”])

->distinct()

->where([“Table_c.b_id IN” => $values]);

クエリー

$query = $this->Table_a->find()

->where([“a_id in” => $sub_query]);

distinct()を使うにはselect()がどうのこうのとか書いてあったけど、destinct()のカッコ内自体は空でいいのか。

getAssociation()は完全に謎。

公式サイトでも使われてるけど、説明なくない?

まあ書いてて完全には理解できないけど、なんとかググってヒントを得つつ自力でたどり着けた。

うれぴー