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

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

新規登録して質問してみよう
ただいま回答率
85.48%
CakePHP

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

Q&A

解決済

1回答

2623閲覧

cakephp3 リレーションのないテーブル情報の取得に関して

XYZA

総合スコア20

CakePHP

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

0グッド

0クリップ

投稿2016/06/23 06:35

編集2016/07/06 04:52

###前提・実現したいこと
cakephp3を使用しています。
リレーションのないテーブルの情報も一括で取得するスマートな方法があれば教えてください。
また、index、viewともに同様の情報を取得したいと思っています。

SQL取得イメージ

sql

1select 2 AA.* 3 , km_A.kbn_name 4 , km_B.kbn_name 5from 6 AA 7 left outer join kbn_master km_A 8 on km_A.subject_id = 3 9 and km_A.kbn_id = A.A_kbn 10 left outer join kbn_master km_B 11 on km_B.subject_id = 4 12 and km_B.kbn_id = A.B_kbn 13 where AA.id = /*id*/ --viewの場合のみWhereを使用; 14

###補足情報(言語/FW/ツール等のバージョンなど)
cakephp3
FriendsOfCake/searchプラグインを使用中

よろしくお願いします。

気になる質問をクリップする

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

そういう場合、自分は実行したいSQLを直接指定して実行しています
以下のようなカスタマイズした検索メソッドをModel側に追加して、コントローラーからそのメソッドを呼び出して検索結果を取得します

CakePHP

1class CallNumbersTable extends Table 2{ 3 /** 4 * カスタム検索 5 * @param $id 6 */ 7 public function custom_find($id = null) 8 { 9 $SQL_QUERY = <<<SQL_ALL 10select 11 studio.*, 12 km_studio.kbn_name, 13 km_elevator.kbn_name, 14from 15 studio 16 left outer join kbn_master km_studio 17 on km_studio.subject_id = 3 and km_studio.kbn_id = studio.studio_kbn 18 left outer join kbn_master km_elevator 19 on km_elevator.subject_id = 4 and km_elevator.kbn_id = studio.elevator_kbn 20SQL_ALL; 21 22 $sql_str = $SQL_QUERY; 23 24 if ($id != null) { 25 $sql_str .= " where studio.id = :ID"; // パラメータがある場合は検索条件を追加 26 } 27 $params = array('ID' => $id); 28 29 $result = $this->query($sql_str, $params); 30 31 return $result; 32 }

投稿2016/06/24 02:35

KatsumiTanaka

総合スコア924

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

XYZA

2016/06/25 05:19 編集

Parse error: syntax error, unexpected end of file in C:\xampp\htdocs\workspase\aaa\src\Model\Table\StudiosTable.php on line 204 残念ながらsyntax errorが発生しました。 場所は一番最後の}の後で詳細は class CallNumbersTable extends Table { public function custom_find($id = null) ・ ・ ・ return $result; } } ←ココが204行目 余計なスペース等は入れていません。 また追加したpublicを削除するとエラーが消えます。
KatsumiTanaka

2016/06/28 05:37

連絡が遅れて、申しわけありません ご指摘の問題ですが、この部分をインデントしていませんか? ---------- ここから -------------------------------------------------------------------- SQL_ALL; ---------- ここまで -------------------------------------------------------------------- この部分は、ヒアドキュメントという構文で、終端は行の最初のカラムからラベル文字が開始している(スペース、Tabは入れてはいけません)必要があります 自分の環境でも、終端をインデントすることで、syntax errorが発生することは確認していますので、コードの確認をお願いします ヒアドキュメント構文については、以下を参照してください http://php.net/manual/ja/language.types.string.php#language.types.string.syntax.heredoc
XYZA

2016/06/28 08:08

ご回答ありがとうございました。 インデントしてました。。。。 ヒアドキュメント構文勉強します。 検証がまだなので、ベストアンサーは少々お待ちください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問