cakePHP find(" list")返回空数组

时间:2015-07-30 20:48:17

标签: php sql-server cakephp cakephp-2.0

我正在尝试使用外键[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,   [用户]。[FirstName] asc

这是它提出的错误:

  

SQL错误:列前缀&#39;用户&#39;与表名不匹配   或查询中使用的别名。 [APP / Model / Datasource / Mssql.php,line   749]

SalesAgent使用类User,它使用表UserAccount

2 个答案:

答案 0 :(得分:1)

我明白了。

问题是查询会运行:

  

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]。

命令

用户不匹配表名或别名,所以我必须在蛋糕中指定顺序。

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

答案 1 :(得分:0)

首先尝试配置模型关联。

什么属于什么以及通过运行此

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

查看试试这个

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

您应该有用户列表。