###前提・実現したいこと
cakephp3を使用して、区分値マスタの情報を電話番号マスタテーブルJOINさせて区分名を表示させたい
■困っていることその1:whereのIDを画面から取得した$idとしたい(idが取得できているのは確認済み)がうまく取得できない
■困っていることその2:whereのIDをDBに存在する情報(固定値)に変更し取得した場合、画面に表示ができない
###発生している問題・エラーメッセージ
■困っていることその1
Error: SQLSTATE[HY093]: Invalid parameter number: no parameters were bound
SQL Query:
WHERE (CallNumbers.A_id = :id ...
と表示されているので、うまく代入ができていないと思われます
■困っていることその2
実行後に取得した配列は以下のような形で取得されました
<?= h($results) ?>の場合文字列でCake\ORM\ResultSet Object ( [items] => Array ( [0] => App\Model\Entity\CallNumber Object ( [call_number_kbn_nm] => PC [call_number] => 1234567890 [[new]] => [[accessible]] => Array ( [*] => 1 ) [[dirty]] => Array ( ) [[original]] => Array ( ) [[virtual]] => Array ( ) [[errors]] => Array ( ) [[invalid]] => Array ( ) [[repository]] => CallNumbers ) ) )
(object)Cake\ORM\ResultSet
と表示され、
<?= h($results ->call_number_kbn_nm) ?>の場合Notice (8): Undefined property: Cake\ORM\ResultSet::$call_number_kbn_nm
とエラーが表示されます。
###該当のソースコード
cakephp3
1/*....Controller.php*/ 2$query = $CallNumber -> find() 3 -> hydrate(true) 4 -> join(['table' => 'kbn_masters', 5 'alias' => 'km', 6 'type' => 'INNER', 7 'conditions' => [ 8 'km.kbnid = CallNumbers.call_number_kbn', 9 'km.subjectid = 2',] 10 ]) 11 ->where('CallNumbers.A_id = :id', ['id' => $id]) 12 -> select([ 13 "call_number_kbn_nm" => "km.kbn_name", 14 "call_number" => "CallNumbers.call_number"]) 15 ; 16 17$results = $query -> all(); 18this -> set('results', $results);
/*view.ctp*/ <?php foreach ($results as $result): ?> <tr> <th><?= __('電話番号') ?></th> <td><?= h($results) ?></td> <td><?= h($results ->call_number_kbn_nm) ?></td> <td><?= h($results ->call_number) ?></td> </tr> <?php endforeach; ?>
電話番号マスタのcall_number_kbnに対応する区分マスタはsubjectidが2のものとなります。
SQL取得イメージ
SQL
1select 2 call_numbers.A_id 3 , kbn_masters.kbn_name 4 , call_numbers.call_number 5from 6 call_numbers 7 inner join kbn_masters 8 on kbn_masters.subjectid = 2 9 and call_numbers.call_number_kbn = kbn_masters.kbnid 10where 11 call_numbers.A_id = /*id*/;
###補足情報(言語/FW/ツール等のバージョンなど)
cakephp3 phpMyAdmin
cakephp初心者です。
このようなサイトに投稿するのも初めてです。
ご不明点等ございましたら指摘のほどお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/06/23 03:11