質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.33%

  • CakePHP

    2389questions

    CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

CakePHP3のWheare句の作成について

受付中

回答 0

投稿

  • 評価
  • クリップ 0
  • VIEW 314

ssk

score 270

説明

コントローラーの中でWheare句を動的に作成しようとしています。

$conditions1 = array(1, 2, 3);
$conditions2 = array(3, 5, 8);
↑このような配列を元に動的にwhere句を作成したいです。
どのように書くと実装できますでしょうか?

今回、発行したいSQL文
SELECT 
  Datacklists.id AS `Datacklists__id`, 
  Datacklists.dal01 AS `Datacklists__dal01`, 
  Datacklists.dal02 AS `Datacklists__dal02`, 
  Datacklists.dal03 AS `Datacklists__dal03`, 
  Datacklists.dal04 AS `Datacklists__dal04`, 
  Datacklists.dal05 AS `Datacklists__dal05`, 
  Datacklists.dal06 AS `Datacklists__dal06`, 
  Datacklists.dal07 AS `Datacklists__dal07`, 
  Datacklists.dal08 AS `Datacklists__dal08`, 
  Datacklists.dal09 AS `Datacklists__dal09`, 
  Datacklists.dal10 AS `Datacklists__dal10`, 
  Datacklists.dal11 AS `Datacklists__dal11`, 
  Datacklists.dal12 AS `Datacklists__dal12`, 
  Datacklists.dal13 AS `Datacklists__dal13`, 
  Datacklists.dal14 AS `Datacklists__dal14`, 
  Dal_list1s.datacklist_id AS `Dal_list1s__datacklist_id`, 
  Dal_list2s.datacklist_id AS `Dal_list2s__datacklist_id`, 
  group_concat(
    distinct AZ_Dal1s.name SEPARATOR ";"
  ) AS `dal15`, 
  group_concat(
    distinct AZ_Dal2s.name SEPARATOR ";"
  ) AS `dal16` 

FROM 
  datacklists Datacklists 
  LEFT JOIN dal_list1s ON dal_list1s.datacklist_id = datacklists.id 
  LEFT JOIN dal_list2s ON dal_list2s.datacklist_id = datacklists.id 
  LEFT JOIN az_dal1s ON az_dal1s.id = dal_list1s.ms_azdal1 
  LEFT JOIN az_dal2s ON az_dal2s.id = dal_list2s.ms_azdal2 

Where datacklists.id  IN(
    select dal_list1s.datacklist_id FROM dal_list1s
    where az_dal1s.id IN (1,2.3)
    )
OR
    datacklists.id  IN(
    select dal_list2s.datacklist_id FROM dal_list1s
    where az_dal2s.id IN (3,5,8)
    )

GROUP BY 
  datacklists.id
以前チェックボックスの選択から動的に生成した内容
if (is_array($dbo02) && count($dbo02) > 0) {
                    $query->where(function ($exp, $q) use ($dbo02) {
                              $i = 0;
                              foreach ($dbo02 as $key => $value) {
                                  if($i == 0){
                                        $orConditions = $exp->or_(['dbo02' => $value]);
                                      }else{
                                        $orConditions->eq('dbo02',$value);
                                  }
                                  $i++;
                              }
                            return $exp
                                        ->add($orConditions);
                     });
                };
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

まだ回答がついていません

同じタグがついた質問を見る

  • CakePHP

    2389questions

    CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。