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");
$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,
[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"]
)
我正在尝试使用外键 [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, [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"]
)