问题1: hasMany()方法关联后可以使用findOne()和findAll()方法查询,但必须传入参数ID,而我要实现是同时查询出ID>N或两张表中所有数据.应该如何实现呢?
问题2:使用findBySql()无论是inner left right联接都只能查到左表数据,这是什么原因?
代码大致如下,如需提供更多,我可以增加,:
以下假设了两张表,数据库:PostgreSQL:
namespace app\models;
use Yii;
class a extends \yii\db\ActiveRecord
{
public static function tableName()
{
return 'a';
}
public static function getDb()
{
return Yii::$app->get('db2');
}
public function getB()
{
return Resources::hasMany(B::className(), ['id' => 'aid']);
}
}
无论我写什么方法或者SQL语句,getRawSql()返回的都是select * from a; 而且长不任何数据.
以一个用户对应多个评论为例,其中用户的AR模型 UserModel,评论模型 CommentModel
以用户为中心,假设需要获取用户信息以及评论信息
UserModel需要这样配置
我们可以这样获取
打印的结果中,会包含两张表的所有字段信息,其中Comment列展示的关联的评论字段信息,我就不把结果贴出来了,当然这只是一种获取的方案,更详细的可以参考手册AR一节
看文档这两法是一样的,但为什么不加asArray()就不会显示第二张表的信息?困惑!!!