我试图通过使用外键UserID来减少用户列表。在控制器中,我找到了(“列表”)。当我在控制器中调试$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)时,它运行的查询如下:
选择SalesAgent.UserID作为SalesAgent__,从UserAccount AS SalesAgent中选择SalesAgent.UserID作为SalesAgent__1,其中1=1阶由User.LastName asc,User.FirstName asc
THis是它提出的错误:
SQL错误:列前缀'User‘与查询中使用的表名或别名不匹配。APP/Model/Datasource/Mssql.php,第749行
SalesAgent使用类用户,它使用表UserAccount。
发布于 2015-08-04 15:01:00
我想通了。
问题是查询将运行:
选择SalesAgent.UserID作为SalesAgent__,从UserAccount AS SalesAgent中选择SalesAgent.UserID作为SalesAgent__1,其中1=1阶由User.LastName asc,User.FirstName asc
它将由User.LastName和User.FirstName订购。
用户不匹配表名或别名,所以我必须在蛋糕中指定订单。
array(
"fields"=>array("SalesAgent.username"),
' "order"=>["SalesAgent.UserID ASC"]
)https://stackoverflow.com/questions/31733731
复制相似问题