模型蛋糕php之间的联系

时间:2014-01-04 18:03:09

标签: cakephp

我尝试使用CakePhp,但我找不到解决方案。这是我的问题:

我有两个模型蚂蚁我尝试链接它。 第一个是Player(mysql表是玩家)

第二个是Toto(mysql表是totos) 我有一个叫做toto_id

的球员

在我的模型玩家中我写道:

<?php
class Player extends AppModel {
    public $validate = array(
        'name' => array(
            'rule' => 'notEmpty'
        )
    );

    public $hasOne = 'Toto';
}

在我的控制器PlayersController中

class PlayersController extends AppController {
    public $helpers = array('Html', 'Form', 'Session');
    public $components = array('Session');

    public function index() {
        $params = array(
            'order' =>  array("Player.firstname")
        );
        $a = $this->Player->find('all', $params);
        print_r($a);
        $this->set('liste', $a);
    }
}

我的print_r显示

Array
(
    [0] => Array
        (
            [Player] => Array
                (
                    [id] => 2
                    [name] => DESMAISON
                    [firstname] => Christophe
                    [is_intern] => 1
                    [score] => 663
                    [created] => 2014-01-05
                    [modified] => 0000-00-00 00:00:00
                    [toto_id] => 2
                )

        )

    [1] => Array
        (
            [Player] => Array
                (
                    [id] => 10
                    [name] => CHARLERY
                    [firstname] => Daphné
                    [is_intern] => 1
                    [score] => 572
                    [created] => 2014-01-04
                    [modified] => 0000-00-00 00:00:00
                    [toto_id] => 0
                )

        )

我不明白为什么在我的数组中我没有提到Toto。有人可以帮帮我吗?

感谢您的帮助

Ps:我使用cakephp 2.4.4 PHP 5.4.7

1 个答案:

答案 0 :(得分:0)

我认为这是BelongsTo Association。

而不是HasOne关联尝试使用BelongsTo,

类Invoice扩展了AppModel {

public $belongsTo  = array(
    'Toto' => array(
        'className'    => 'Toto',
        'foreignKey'   => 'toto_id'
    ),
);

如果你想从数据库中检索数据,你必须设置你的递归,首先有两种方法:

$players = $this->Player->find('all',array('recursive'=>2));
// or
$this->Player->recursive = 2;
$player = $this->Player->find('all');