gpt4 book ai didi

php - SQL 连接查询 View 在 Yii2 中不起作用

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

我正在使用 3 个表(property、property_rooms、property_images)。我有一个 sql 查询,需要在 Yii 操作和 View 中实现它。

SELECT * FROM property JOIN property_rooms ON property.property_id = property_rooms.property_id JOIN property_images ON property.property_id = property_images.property_id 

在 Controller /操作中我使用了以下代码:

$sql ='SELECT * FROM property JOIN property_rooms ON property.property_id = property_rooms.property_id JOIN property_images ON property.property_id = property_images.property_id';
$properties = property::findBySql($sql)->all();
return $this->render('index',['properties'=>$properties]);

在查看文件中,我使用了:

<?php foreach ($properties as $property): ?>
<?= $property->property_id ?>
<?= $property->price?>
<?php endforeach; ?>

正在显示第一个表的值,但可以访问和显示其他表的值。

最佳答案

自从您使用

$properties = property::findBySql($sql)->all();          

$properties 将包含属性模型。

您可以定义关系(例如 propertyRooms)并使用它们访问

<?php foreach ($properties as $property): ?>
<?= $property->property_id ?>
<?= $property->price?>
<?php foreach($property->propertyRooms as $pr) : ?>
<?php /* ... */ ?>
<?php endforeach; ?>
<?php endforeach; ?>

例如,propertyRooms 属性可以在属性模型中定义为:

public function getPropertyRooms() { return $this->hasMany(PropertyRoom::className(), ['property_id' => 'property_id']); }

最后,我将使用 ActiveDataProvider 方法来获取属性数据:

$properties = property::find()->with('propertyRooms')->all();

因此您只需一步即可获取所有属性数据。

关于php - SQL 连接查询 View 在 Yii2 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34987616/

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