以下是tblagegroup的架构
CREATE TABLE `tblagegroup` (
`AgeGroupID` tinyint(3) UNSIGNED NOT NULL,
`MinAge` int(11) NOT NULL,
`MaxAge` int(11) NOT NULL
);
以下是tblcontentlibrary
的架构CREATE TABLE `tblcontentlibrary` (
`ContentLibraryID` int(11) NOT NULL,
`AgeGroupID` tinyint(3) UNSIGNED NOT NULL
);
AgeGroupID在两个表中都相关联。
我试图从tblcontentlibrary获取那些记录,其中MinAge> = 2且MaxAge是< = 4
以下是我的尝试。
\App\Models\ContentLibraryModel
::with('AgeGroup')
->where('MinAge', '>=', $years)
->where('MaxAge', '<=', $years)
->get();
我收到以下错误。
未找到列:1054'where子句'中的未知列'MinAge'(SQL: 从
tblcontentlibrary
中选择*,其中MinAge
&gt; = 0且MaxAge
&lt; = 0)
我错过了什么吗?
答案 0 :(得分:1)
如果您的关系正确,this should work:
\App\Models\ContentLibraryModel::with(['AgeGroup' => function ($query) use ($years) {
$query->where('MinAge', '>=', $years)->where('MaxAge', '<=', $years);
}])->get();
答案 1 :(得分:0)
使用whereHas
根据关系调整退货。
\App\Models\ContentLibraryModel::with('AgeGroup')
->whereHas('AgeGroup', function ($query) use ($years) {
$query->where('MinAge', '>=', $years);
$query->where('MaxAge', '<=', $years);
})
->get();
这只会返回AgeGroup符合该条件(whereHas
)的模型,并且还会返回AgeGroup关系(with
)。
答案 2 :(得分:0)
我的工作查询如下。
\App\Models\ContentLibraryModel
::selectRaw('CL.*, AG.MinAge, AG.MaxAge')
->from('tblcontentlibrary as CL')
->join('tblagegroup as AG', 'AG.AgeGroupID', '=', 'CL.AgeGroupID')
->where('AG.MinAge', '<=', $years)
->where('AG.MaxAge', '>=', $years)
->get();