ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
主表**不包含**外键,从表**包含** 外键 据关联表的查询条件查询当前模型的数据,可以使用`hasWhere`方法 ~~~ $res5=\app\index\model\BannerItem::hasWhere('image',['path'=>'/public/img/3.jpg'])->select(); //sql:"SELECT `BannerItem`.* FROM `banner_item` `BannerItem` INNER JOIN `img` `Img` ON `BannerItem`.`img_id`=`Img`.`id` WHERE `Img`.`path` = '/public/img/3.jpg'" ~~~ 两个表的条件都存在 ``` $res5=\app\index\model\BannerItem::hasWhere('image',['path'=>'/public/img/3.jpg'])->where(['banner_id'=>1])->select(); sql: "SELECT `BannerItem`.* FROM `banner_item` `BannerItem` INNER JOIN `img` `Img` ON `BannerItem`.`img_id`=`Img`.`id` WHERE `Img`.`path` = '/public/img/3.jpg' AND `banner_id` = 1" ``` `V5.0.3+`版本开始,可以指定关联模型返回的字段,例如: 如果使用的是`join`方式的关联,不支持指定field字段。(???) ~~~ namespace app\index\model; use think\Model; class User extends Model { public function userRelationProfile(){ return $this->hasOne('Profile'); } public function profile() { return $this->hasOne('Profile')->field('id,username,email');//只能指定profile里的字段,指定其他模型对应表的字段会报错。 } } ~~~ 控制器: ``` $users1=\app\index\model\User::all([],'userRelationProfile'); $users2=\app\index\model\User::all([],'profile'); dump($users1->toArray()); dump($users2->toArray()); ``` 结果: ![](https://img.kancloud.cn/38/0f/380f969624622d808f44a940fe7b401c_426x446.png)