从 table1 中检索数据,但在 table2 中进行比较 - Laravel eloquent
Posted
技术标签:
【中文标题】从 table1 中检索数据,但在 table2 中进行比较 - Laravel eloquent【英文标题】:retrieve data from table1 but do comparision in table2 - Laravel eloquent 【发布时间】:2018-07-28 19:32:29 【问题描述】:我有一个如下查询:
Relation1::with('relation2')
->select('relation_1_columns')
->where('relation_2_column', $relation2->id) //Throws unknown column error
->where('relation_2_column', 1) //Throws unknown column error
->get()->toArray();
如果我这样做:
Relation1::with('relation2')
->select('relation_1_columns')
->where('relation2.relation_2_column1', $relation2->id) //Throws unknown column `relation2.relation_2_column` error
->where('relation2.relation_2_column2', 1) //Throws unknown column `relation2.relation_2_column` error
->get()->toArray();
如何使用where clause
对使用with
附加的表格进行检查
【问题讨论】:
你的关系模型中是否定义了任何关系? @Sohel0415 是的,hasMany。 Relation1 有许多 Relation2。我想要 Relation1 的所有数据,其中 Relation1.id === Relation2.other_id 【参考方案1】:使用whereHas():
Relation1::with('relation2')
->select('relation_1_columns')
->whereHas('relation2', function($q) use ($relation2)
$q->where('relation_2_column1', $relation2->id)->where('relation_2_column2', 1);
)
->toArray();
【讨论】:
以上是关于从 table1 中检索数据,但在 table2 中进行比较 - Laravel eloquent的主要内容,如果未能解决你的问题,请参考以下文章
如何选择在 table1 中有值但在 table2 中为 NULL 的字段表?
如何从“TABLE1 AND TABLE2”创建 SELECT 查询
执行sql语句,table1 left join table2 on...... 此时table2有重复的数据,从而导致最后的临时表也会出现