gpt4 book ai didi

php - yii 附加模型属性及其范围

转载 作者:可可西里 更新时间:2023-10-31 23:48:27 25 4
gpt4 key购买 nike

我正在从数据库中获取大量订单记录,我想添加另一个字段,即相关表(客户)中的列,以获取记录。

但是这个字段不会被直接获取,因为它不是订单模型的一部分。

所以我向模型添加了一个属性来保存这个额外的属性,并且我的选择是这样的:

    $criteria = new CDbCriteria();
$criteria->join = 'INNER JOIN customers c ON t.idCustomer = c.idCustomer';
$criteria->select = 't.* , c.CustomerName AS CustomerName'; // CustomerName is the added attribute

$data = Orders::model()->findAll($criteria);
var_dump($data); // in here CustomerName is fetched,
$data = CJSON::encode($data); // but not here, its not even part of encoded string!

我需要立即对其进行编码,我不想将 afterFind() 放入我的模型中(尽管我认为它不会被编码),

我有什么地方没看懂吗?我怎样才能做到这一点?

最佳答案

如果不修改 CActiveRecord 类,您将无法做到这一点。在 Yii 中默认你不能使用魔法 setters 和 getters。当您创建模型的实例时,只有数据库列会添加到属性列表中。

您可以通过覆盖模型文件中的 getMetaData() 来添加其他属性:

public function getMetaData(){
$data = parent::getMetaData();
$data->columns['CustomerName'] = array('name' => '...');
return $data;
}

关于php - yii 附加模型属性及其范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19374198/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com