こんにちは。現在JOINしたテーブルの名前を表示させたいのですが、どうすればいいのかわからなくなっています。
環境 cakePHP3 mysql5.7
**あるもの
Tables
1ordersTable 2optiopnsTable
ordersTableのカラム
ordersTable
1id 2optionid 3created 4modified
optionsTableのカラム
optionsTable
1id 2name 3created 4modified
という構成にしてます。
ここで
MySQL
1SELECT optionid FROM orders 2INNER JOIN options 3ON orders.optionis = orders.id;
という形で結合をしました。
ここで表示させたいのがorders/index.ctpでoptionsTableのnameを取得して表示したいです。
Orders/index.ctp echo $this->Form->input('optionid', array('label' => 'オプション機能', 'readonly' => 'readonly', 'required' => false));
このように記載するとoptionidが取得することができたのが確認できています。
おそらくこのoptionidがポイントになると思い
optionid.name optionsname
と試したのですが、表示されません。
この結合させた時の結合相手の条件と異なる要素、この場合ですとidで結合しているのでそれ以外の情報はどのように取得して表示させることができるのでしょうか?
教えていただけますと幸いです。
追記
こちらの記事を試してみました。belongsToを使用してみました
OrderTableにoptionsを追加しました
OrderTable
1 public function initialize(array $config) 2 { 3 parent::initialize($config); 4 5 // OptionTable追加 6 $this->belongsTo('Options');
コントローラ側で検索
OrdersController
1public function index() 2 { 3 $query = $this->AcceptOrder->find('all')->contain(['Options']); 4 $this->set('orders', $query); 5 }
ctpで表示する
<label> <?php foreach ($orders as $orders): ?> <span class="checkbox01-parts bold"><?= $orders->options->name ?></span> <?php endforeach; ?> </label>
としました。ですが表示がされていません。
回答3件
あなたの回答
tips
プレビュー