"错误:SQLSTATE [42S22]:未找到列:1054"在CakePHP 2.x中使用自定义主键时

时间:2016-01-11 09:13:06

标签: cakephp orm cakephp-2.x

我尝试使用以下代码在CakePHP 2.x中构建一个下拉列表:

控制器

$Propertytype=$this->Propertytype->find("list",array("fields" => array("Propertytype.propertytype_id,Propertytype.propertytype_name,Propertytype.propertytype_id"),"order" => array("Propertytype.propertytype_id" => "desc"),"conditions" => array("Propertytype.propertytype_status" => "0")));   
$this->set("propertytype",$Propertytype);

查看

<?php echo $this->Form->input("propertytype",array("class"=>"form-control","data-style"=>"btn-white",
                    "data-live-search"=>"true","label"=>false,"data-size"=>"5","required"=>"required","options"=>$propertytype));
?>  

我没有使用Propertytype.id作为主键。我将其重命名为Propertytype.Propertytype_id。但是当我运行查询时,它要求Propertytype.id

Database Error
Error: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'Propertytype.id' in 'field list'

如何将其更改为Propertytype.property_id作为选项值?

1 个答案:

答案 0 :(得分:1)

您必须在课程$primaryKey中定义Propertytype

class Propertytype extends AppModel 
{
    public $primaryKey = 'property_id';
}

您还必须使用正确的语法编写查询:

$Propertytype=$this->Propertytype->find("list",array(
    "fields" => array(
        "Propertytype.propertytype_id",
        "Propertytype.propertytype_name"
    ),
    "order" => array("Propertytype.propertytype_id" => "desc"),
    "conditions" => array("Propertytype.propertytype_status" => "0")
));

你忘记了引号。