当不联表时,可以查个别字段。
$user->find()->select(['userid', 'username'])->asArray()->all();
然后sql也很正常
select userid, username from ...
但联表时。。。
$user->find()
->joinWith([
'account' => function ($object) {
$object->select(['account_name', 'account_level', 'account_status']);
},
'bank' => function ($object) {
$object->select(['bank_name', 'bank_province', 'bank_branch', 'bank_account']);
}
])
->asArray()
->all();我看了下查询SQL居然是
2088shop商城购物系统是商城系统中功能最全的一个版本:非会员购物、商品无限级分类、不限商品数量、商品多级会员定价、上货库存、Word在线编辑器、订单详情销售报表、商品评论、留言簿、管理员多级别、VIP积分、会员注册积分奖励、智能新闻发布、滚动公告、投票调查、背景图片颜色更换、店标上传、版权联系方式修改、背景音乐(好歌不断)、广告图片支持Flash、弹出浮动广告、搜索引擎关健词优化、图文友情联
0
select * from ....
坑爹呢这是?还是是我用的方法有问题??
当不联表时,可以查个别字段。
$user->find()->select(['userid', 'username'])->asArray()->all();
然后sql也很正常
select userid, username from ...
但联表时。。。
$user->find()
->joinWith([
'account' => function ($object) {
$object->select(['account_name', 'account_level', 'account_status']);
},
'bank' => function ($object) {
$object->select(['bank_name', 'bank_province', 'bank_branch', 'bank_account']);
}
])
->asArray()
->all();我看了下查询SQL居然是
select * from ....
坑爹呢这是?还是是我用的方法有问题??
你应该把select写在joinWith外面:
$user->find()->select(['account_name', 'account_level', 'account_status', 'bank_name', 'bank_province', 'bank_branch', 'bank_account']) ->joinWith(['account', 'bank']) ->asArray() ->all();
当然会是 select * 因为你的操作只是在限定了查询关联表的时候会指定select字段.
所以还是向你单个的那样,指定select就好
以上就是Yii2联表查询不能查个别字段?的内容,更多相关内容请关注PHP中文网(www.php.cn)!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号