1

私はCakePHPのWebサイトで例を見ていました。特に、モデルのリンクに使用されるhasOneです。 http://book.cakephp.org/view/78/Associations-Linking-Models-Together

私の質問はこれです、CakePHPはhasOneリンケージを使用するモデルで返されるデータの配列構造を構築するために2つのクエリを使用していますか?

CakePHPから取得:// $ this-> User-> find()呼び出しの結果のサンプル。

Array
(
    [User] => Array
        (
            [id] => 121
            [name] => Gwoo the Kungwoo
            [created] => 2007-05-01 10:31:01
        )
    [Profile] => Array
        (
            [id] => 12
            [user_id] => 121
            [skill] => Baking Cakes
            [created] => 2007-05-01 10:31:01
        )
)

これがすべて理にかなっていることを願っています。

4

2 に答える 2

2

Model::findhasOne結合を使用して、belongsTo関係によってソース モデルに関連付けられたモデル レコードを取得します。特定の SQL クエリは次のようになります (Car belongsTo Driverモデル構造を使用)。

SELECT `Car`.`brand`, `Car`.`colour`, `Driver`.`name`, `Driver`.`age`
    FROM `cars` AS `Car`
    LEFT JOIN `drivers` AS `Driver` ON `Car`.`id` = `Driver`.`car_id`
WHERE `Car`.`brand` = 'Aston Martin'

各モデルに属するフィールドは、テーブル/モデル エイリアスによって対応する配列要素に解析できます。

  • Car.brandになる$result['Car']['brand']
  • Car.colourになる$result['Car']['colour']
  • Driver.nameになる$result['Driver']['name']
  • Driver.ageになる$result['Driver']['age']

必要なクエリは 1 つだけです。

hasManyおよび関連付けのデータを取得するには、hasAndBelongsToMany追加のクエリが必要です。場合によってはさらに多くのクエリが必要になります。

于 2010-04-26T20:10:02.103 に答える
0

すべてではないにしても、ほとんどの hasOne と belongsTo が join を使用して行われていることを確認してください。1つのクエリ。config.php でいつでも debug を 2 に設定して、SQL クエリを確認できます。

于 2010-04-26T19:23:25.190 に答える