Motomichi Works Blog

モトミチワークスブログです。その日学習したことについて書いている日記みたいなものです。

vagrantその19-46 cakephp入門をやってみる(複数Modelの連携その5)LEFT JOINを行う「belongsTo」

参考にさせて頂いたページ

複数Modelの連携(5/6):初心者のためのCakePHP2.0 プログラミング入門

ホストマシン環境

ゲストマシン環境

Model/GuestBook.phpの編集と記述内容

参考ページにならって以下の通り。

<?php
App::uses('AppModel', 'Model');

class GuestBook extends AppModel {
  public $belongsTo = "MySampleData";
}

View/Controller/GuestBooksController.php

indexとaddがあるけど、今回使用しているのはindexの方です。

<?php
App::uses('AppController', 'Controller');
class GuestBooksController extends AppController {
  function index(){
    $datas = $this->GuestBook->find('all');
    $this->set('datas',$datas);
  }
  function add() {
    // post時の処理
    if ($this->request->is('post')) {
      $this->GuestBook->save($this->request->data);
    }
    // 表示用にテーブルのデータを取得してset
    $datas = $this->GuestBook->find('all');
    $this->set('datas',$datas);
  }
}

View/GuestBooks/index.ctp

配列を表示するだけなので、以下の通り。

<pre>
<?php print_r($datas) ?>
</pre>

出力結果

http://192.168.33.10/cakephp/guest_books/indexにアクセスしてみると以下の通り。

Array
(
    [0] => Array
        (
            [GuestBook] => Array
                (
                    [id] => 1
                    [content] => content_1
                    [my_sample_data_id] => 5
                )

            [MySampleData] => Array
                (
                    [id] => 5
                    [name] => name5
                    [mail] => mail5
                    [tel] => tel5
                )

        )

    [1] => Array
        (
            [GuestBook] => Array
                (
                    [id] => 2
                    [content] => content_2
                    [my_sample_data_id] => 6
                )

            [MySampleData] => Array
                (
                    [id] => 6
                    [name] => name6
                    [mail] => mail6
                    [tel] => tel6
                )

        )

    [2] => Array
        (
            [GuestBook] => Array
                (
                    [id] => 3
                    [content] => content_3
                    [my_sample_data_id] => 7
                )

            [MySampleData] => Array
                (
                    [id] => 7
                    [name] => name7
                    [mail] => mail7
                    [tel] => tel7
                )

        )

    [3] => Array
        (
            [GuestBook] => Array
                (
                    [id] => 4
                    [content] => content_4
                    [my_sample_data_id] => 5
                )

            [MySampleData] => Array
                (
                    [id] => 5
                    [name] => name5
                    [mail] => mail5
                    [tel] => tel5
                )

        )

)

このソースコードについて

my_sample_data_idが5,6,7,5なので、my_sample_dataテーブルのid5,6,7のレコードがそれぞれ紐づけられる。

今回はここまで。