gpt4 book ai didi

php - Yii Joined table 但不是所有选定的数据都被检索

转载 作者:行者123 更新时间:2023-11-29 03:06:37 25 4
gpt4 key购买 nike

我的 Controller 中有以下条件。

    $criteria = new CDbCriteria;
$criteria->select = 't.*,b.*,c.*';
$criteria->join = "INNER JOIN tbl_patient_chair b ON b.patient = '0005'
INNER JOIN tbl_chair c ON b.chair = c.Serial_No";
$criteria->condition = "t.client_id = '0005'";

$model = Patient::model()->findAll($criteria);

$this->render('view', array(
'model' => $model
));

然后在我看来,我正在尝试通过以下方式检索所有选定的数据:

foreach ($model as $models)
print_r($model);

但是在结果中我可以看到第二个和第三个表中没有数据。第一个表的数据已成功获取,但是我无法显示另一个表的数据。

谁能告诉我我做错了什么?

最佳答案

在 Yii 中最好通过创建关系来使用连接,这样你就不需要编写复杂的查询

首先在你的 sql 表中添加外键(例如在 chair 中添加外键 patientId)

接下来,如果您重新生成模型,您可以看到自动添加的关系(或者您可以手动添加关系)

public function relations()
{

return array(
'chairs' => array(self::HAS_MANY, 'chair', 'patientId'),
);
}

在椅子模型中你会看到这种关系

'patient' => array(self::BELONGS_TO, 'patient', 'patientId'),

单独定义关系允许您访问查询模型中的值作为 $model->relationName,如果您想在“where”条件下使用列,请在您的模型函数中使用以下查询

$patients=Patient::model()->findAll(array(
'condition' => "$field like '%$value%'",
'with'=>array('chairs'),
'select'=> "*",
));

“with”关键字很重要,可以将一系列关系列表包含在查询中。查询条件将应用于包含的所有表,如果不想查询其他表的字段,只需要链接输出数据,则可以跳过“with”关键字。

并且您可以通过

到达分配给患者的椅子
foreach($patients as $patient)print_r($patient->chairs);

还有其他方法,例如讨论过的方法 here

要与关系取得更多联系,请转到 here

关于php - Yii Joined table 但不是所有选定的数据都被检索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14157065/

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