我正在尝试使用外键[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");
$users
是find("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
答案 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");
您应该有用户列表。