cakePHP find("list") returns 空数组

cakePHP find("list") returns empty array

我正在尝试使用外键 [UserID] 创建一个用户下拉列表。 在控制器中,我找到了("list")。当我在控制器中调试 $this->Order->SalesAgent 时,它会打印用户对象。但是,在视图页面中,当我调试时 $this->Order->SalesAgent->find("list") 的结果显示和空数组。

这里是控制器:

    public function edit_sales_agent ($id=null) {
        debug($this->Order->SalesAgent);
        $this->set("users",$this->Order->SalesAgent->find("list"));
        debug($this->users);
    }

这是视图:

debug($users);
echo $this->Form->create("Order");
    echo $this->Form->input("UserID");

$usersfind("list")

的结果

有人能帮帮我吗? 谢谢!

协会:

class Order extends AppModel{
    public $useTable = 'CustomerOrder';
    public $primaryKey = 'OrderID';
    **public $belongsTo = array(
        "SalesAgent"=>array(
            "className"=>"User",
            "foreignKey"=>"UserID"**
        ),

销售代理型号:

<?php
class User extends AppModel{
    public $useTable = 'UserAccount';
    public $primaryKey = 'UserID';
    public $order = array(
        "User.LastName"=>"asc",
        "User.FirstName"=>"asc"
    );
    public function __construct($id = false, $table = null, $ds = null) {
        parent::__construct($id, $table, $ds);
        $this->virtualFields['full_name'] = sprintf("(%s.FirstName+' '+%s.LastName)", $this->alias, $this->alias);
    }
    public function login($data){
        return $this->find("first",array("conditions"=>$data['User']));
    }
}

更新:

好的,我知道是什么问题了,但我不知道如何解决。 当我键入 find(list) 时,这是它运行的查询:

SELECT [SalesAgent].[UserID] AS [SalesAgent__0], [SalesAgent].[UserID] AS [SalesAgent__1] FROM [UserAccount] AS [SalesAgent] WHERE 1 = 1 ORDER BY [User].[LastName] asc, [User].[FirstName] asc

这是它提出的错误:

SQL Error: The column prefix 'User' does not match with a table name or alias name used in the query. [APP/Model/Datasource/Mssql.php, line 749]

SalesAgent 使用 class User,后者使用 table UserAccount

首先尝试配置您的模型关联。

什么是属于什么和由运行这个

public function edit_sales_agent ($id=null) {
    $users = $this->Order->SalesAgent->find("list");
    $this->set("users",$users);
}

查看试试这个

echo $this->Form->input("user_id");

您应该有用户列表。

我明白了。

问题是查询会 运行:

SELECT [SalesAgent].[UserID] AS [SalesAgent__0], [SalesAgent].[UserID] AS [SalesAgent__1] FROM [UserAccount] AS [SalesAgent] WHERE 1 = 1 ORDER BY [User].[LastName] asc, [User].[FirstName] asc

它将按 [User].LastName 和 [User].[FirstName].

排序

用户与 table 名称或别名不匹配,所以我必须在 cake 中指定顺序。

array(
   "fields"=>array("SalesAgent.username"), 
'   "order"=>["SalesAgent.UserID ASC"] 
)