如何从蛋糕PHP中的一个连接到另一个的模型中获取数据

时间:2014-04-29 13:37:55

标签: php cakephp

我有三张不同的牌桌。

  1. 用户
  2. UserBids
  3. 公司
  4. 现在我正在从User检索数据。 每个用户都有许多UserBids。 每个UserBids属于任何公司。

    现在我正在编写类似的查询。

    $Users = $this->Users->find('all', array(
            'conditions' => array('Users.id' => $userid)
    ));
    

    获取有关User和UserBids的所有数据。

    但是在UserBids表中,有一个字段,它的名字是company_id。

    如何通过公司表中的company_id获取公司名称和其他数据?

3 个答案:

答案 0 :(得分:2)

您正在使用recursive选项find() - http://book.cakephp.org/2.0/en/models/model-attributes.html#recursive。它需要一个int,它是查询查询将遍历并返回数据的关联数。默认值为1,用于说明您的结果。

答案 1 :(得分:2)

首先,您应该遵循CakePHP naming conventions。型号名称应该是单数。

以下是您可以使用的代码:

您的模型文件应如下所示:

app/Model/User.php

App::uses('AppModel', 'Model');
class User extends AppModel
{
    public $name = 'User';
    public $useTable = 'Users';    
    public $hasMany = array('UserBid' => array('className' => 'UserBids',
                                               'foreignKey' => 'user_id'));
}

app/Model/UserBid.php

App::uses('AppModel', 'Model');
class UserBid extends AppModel
{
    public $name = 'UserBid';
    public $useTable = 'UserBids';    
    public $belongsTo = array('Company' => array('className' => 'Company',
                                                 'foreignKey' => 'company_id'));
}

app/Model/Company.php

App::uses('AppModel', 'Model');
class Company extends AppModel
{
    public $name = 'Company';
    public $useTable = 'Company';
}

现在您的查找条件应如下所示:

$user_details = $this->User->find('all', array('conditions' => array('Users.id' => $userid),
                                               'recursive' => 2));

答案 2 :(得分:0)

//这是用于调用UserBids表

$这 - > loadmodel(' UserBids&#39);

你可以这样尝试

$则fetch_data = $这 - > UserBids->发现('所有',阵列('条件' =>阵列(' UserBids.id&#39 ; => $ _ SESSION [' USERAUTH'] ['用户'] [' ID'])));

$ this-> set(' selected',$ fetch_data);