codeigniter を使用してマルチサイト CMS を作成していますが、ナビゲーション リンクのクエリに問題があります。(location_id = 0)
各ページには、設定されている場合、サイトに固有の値でデフォルトを上書きするメタ値を含めることができます。2 つのテーブルがcms_pages
ありcms_page_meta
、情報を格納しています。以下は関連データです
Table cms_pages
page_id
Table cms_page_meta
meta_id
location_id
page_id
tag_name
tag_value
可能であれば、これを 1 回の呼び出しで実行したいと考えています。
これは私が使用していた呼び出しです。タイトル値がすべての場所(location_id = 0)
に存在し、特定の場所(location_id = x)
が存在する場合は特定の場所が存在する場合、ページが2回リストされます。存在しない場合はジェネリック、そうでない場合はNULL
SELECT cms_page.*, cms_page_meta.tag_value
FROM cms_pages
LEFT JOIN cms_page_meta ON cms_page_meta.page_id = cms_pages.page_id
WHERE cms_page_meta.location_id IN (0, x)
ORDER BY cms_pages.page_order`
合体を使用する必要があると確信していますが、それを実装する方法がわかりません。一度に多くのことをしようとしていますか? 呼び出しを分割して PHP array_merge で処理する必要がありますか? ページまたはメタデータを変更するたびに、呼び出しをキャッシュし、キャッシュを削除/再生成できるため、これを避けたいと思います。サーバーは 1 日に最大 10,000 ヒットを取得するため、速度は役に立ちますが、まだ必要ではありません...
上記のクエリを変更して、現時点では一般的なデータのみを取得するようにしました。どんな助けでも大歓迎です!