-1

当我通过 find('all') 搜索数据时,它会得到这个返回数据:

Array ( 
 [0] => 
   Array ( 
     [0] => /* why this is not the model name? */
    Array ( 
      [id] => 1 
      [username] => ** 
      [password] => en 
      [memo] => **
    )
  )
)

我怎样才能得到这样的结果?

Array ( 
 [0] => 
   Array ( 
     ['User'] => /* use the model name? */
    Array ( 
      [id] => 1 
      [username] => ** 
      [password] => en 
      [memo] => **
    )
  )
)

我发现另一个问题:

account table:
id username password
2  admin    123456

email table:
id title content      account_id
1  test  test email   2

像这样的模型: class Account extends AppModel { public $name = 'Account'; }

class Email extends AppModel{
    public $name = 'Email';
    public $belongsTo = array(
        'Account' => array(
            'className' => 'Account',
            'foreignKey' => 'account_id'
        )
    );
}

所以我编码:

App::import('Model','Email');
$this->Email = new Email();
$result = $this->Email->find('all');

我得到的结果是:

Array ( 
 [0] => 
   Array ( 
     [0] =>
        Array ( 
          [id] => 1 
          [username] => admin 
          [password] => 123456 
          [title] => test
          [content] => test email
          [account_id] => 1
        )
  )
)

为什么表的 id 在结果中Email覆盖了Account表的 id?

谁能告诉我我需要在我的 php 中安装哪些 php 开销?

4

1 回答 1

0

您不需要在控制器中实例化模型。当代码运行时,它们将被延迟加载。

如果要删除数字索引并且只搜索单个记录,则应使用find('first')它,因为这将仅返回一条记录,这将从结果中删除数字索引。

在您的控制器中,例如 UsersController,您应该能够做到。

App::uses('AppController', 'Controller');

class UsersController extends AppController {
  public function index() {
    $users = $this->User->find('all');
    var_dump($users);
  }
}

如果你想在这里加载不同的模型,你可以使用$this->loadModel()

App::uses('AppController', 'Controller');

class UsersController extends AppController {
  public function index() {
    $this->loadModel('People');
    $users = $this->People->find('all');
    var_dump($users);
  }
}
于 2013-06-10T09:33:11.653 回答