gpt4 book ai didi

mysql - Yii 关系 — MySQL 外键

转载 作者:行者123 更新时间:2023-11-29 23:17:15 25 4
gpt4 key购买 nike

MySQL 中的表:

字段:

id pk
<小时/>

字段选项

id pk

feild_id int(11)

ALTER TABLE `field_option` ADD CONSTRAINT `option_field` FOREIGN KEY ( `feild_id` ) REFERENCES `agahi_fixed`.`field` (
`id`
) ON DELETE CASCADE ON UPDATE RESTRICT;
<小时/>

关系字段模型:

return array(
'fieldOption' => array(self::HAS_MANY, 'FieldOption', 'feild_id'),
);

关系字段选项模型:

return array(
'feild' => array(self::BELONGS_TO, 'Field', 'feild_id'),
);

在 Controller 中:

if(Field::model()->exists('cat_id = :catId', array(":catId"=>$_POST['catid']))){
$criteria=new CDbCriteria;
//$criteria->select='*';
$criteria->condition='cat_id=:catId';
$criteria->params=array(':catId'=>$_POST['catid']);
$criteria->with = 'fieldOption';
$field=Field::model()->findAll($criteria);
header('Content-type: application /json');
$jsonRows=CJSON::encode($field);
echo $jsonRows;
}

但它不适用于仅在字段表中选择记录。

为什么?

最佳答案

这样你就无法实现你想要的目标,

当您使用 with 获取记录时,它将获取关联的记录,这意味着:急切加载而不是惰性加载,但是当您对您的数据进行 json 编码时模型,它将获取主模型的属性,而不是任何关系,如果您希望任何相关数据与模型一起编码,则必须明确说明。我建议创建一个空数组:

$result = array();

对模型进行循环并附加到此结果,从模型到相关模型

foreach($field as $model)
{
$record = $model->attributes; // get main model attributes
foreach($model->fieldOption as $relation)
$record['fieldOption'][] = $relation->attributes; // any related records, must be explicitly declared

$result[] = $record;
}

现在你已经有了你所需要的,然后回显它

 echo CJSON::encode($result);

关于mysql - Yii 关系 — MySQL 外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27667733/

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