関連する 2 つのテーブルにある変数をチェックして、1 つのテーブルの 1 つのレコードを取得しようとしています。
たとえば、私のテーブルは
user:
id | name
3781 | Foo Manchu
user_programs:
id | user_id | page_id
4150 | 3781 | 16974
Page
id | title | section_id
16974 | Dudes | 3
したがって、section_id が 3 のユーザーをクエリして返す必要があります。
ユーザーは、page_id を介して特定のページに関連付けられている user_program テーブルに関連付けられています。
これは私が持っているもので、何も返していません:
if($section_id == 3) {
$q = $this->createQuery('u');
$q->leftJoin('u.user_programs up');
$q->leftJoin('up.Page p');
$q->where('u.published=1 AND u.is_preview = 0 AND u.featured=1 AND fp.deleted_at IS NULL');
$q->addWhere('p.section_id=?', $section_id);
$q->orderBy('RAND()')->limit(1);
結合を行わずに u クエリを正常に返すことができますが、関連するページの section_id が 3 のユーザーのみを返すようにクエリを制限する必要があります。