从 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 的字段表?

Laravel 根据外键获取数据

如何从“TABLE1 AND TABLE2”创建 SELECT 查询

sqlite python 插入

执行sql语句,table1 left join table2 on...... 此时table2有重复的数据,从而导致最后的临时表也会出现

从 table1 中选择不在 table2 中的列