我正在使用Yii框架2.0并拥有两个数据库表(A和B)。它是一个关系数据库1:n。 A只有一个B,但B有很多A.我的数据库看起来与此类似。Yii Framework 2.0关系数据库活动记录
A table:
id = 1, name = yes
id = 2, name = no
id = 3, name = ok
id = 4, name = good
B table:
id = 1, a_id = 1
id = 2, a_id = 1
id = 3, a_id = 2
id = 4, a_id = 2
id = 5, a_id = 3
以我控制器I使用以下代码来检索和A的所有数据B:我使用下面的for-each呼应的所有数据
$bModel = B::find()->all();
以我图。
foreach($bModel as $b) {
echo $b->a->name . ' - ' $b->id. '<br>;
}
结果是:
yes - 1
yes - 2
no - 3
no - 4
我要的是:
yes - 1
2
no - 3
4
我要合并的A_ID和显示所有B的每个合并A_ID的ID。我不想使用正常的方式,先获取所有a的id,然后使用for-each来循环每个a的id,然后通过a的id来逐个查询b。我如何用Yii framework 2.0来处理第二个结果?
如果有ID = 3的一个表,但是有在B表NO A_ID = 3,我想只查询A记录其中B有它的A_ID作为外键。我怎样才能做到这一点? – 2014-11-12 16:33:56
我认为你所描述的是一个内部联接。在这种情况下,尝试将foreach循环中的代码从'A :: find() - > joinWith('bs') - > all()'更改为'A :: find() - > innerJoinWith('bs') - > all()' – Caleb 2014-11-12 16:45:50
它很棒。感谢那。不幸的是我也需要使用分页控件。所以我使用了后面的代码:A :: find() - > innerJoinWith('bs');我的分页代码如下所示:$ pagination = new Pagination([ 'defaultPageSize'=> 2, 'totalCount'=> A-> count(), ]); $ allA = A-> offset($ pagination-> offset) - > limit($ pagination-> limit) - > all(); – 2014-11-13 09:05:37