php—在查询1中使用查询2获取一个查询中的所有数据

cngwdvgl  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(352)

我有三张table:

  • 暗示(id,名称…)*效果(id,名称…)*暗示\u有\u效果(暗示\u id,效果\u id)

我可能在一个暗示中有一对多的效果,一个暗示可能有一对多的效果,这就是为什么我有这个连接表。
我有一个雄辩的问题:
查询1:

$informations_plante = DB::table('herbs')
        ->select('herbs.name as hname', 'herbs.sciname', 'herbs.id as herbid','hinteractions.id as hinteractionid','hinteractions.note as hinteractionnote','hinteractions.force_id','targets.name as targetname', 'forces.name as force_name')
        ->leftJoin('hinteractions', 'herbs.id', '=', 'herb_id')
        ->leftJoin('forces', 'forces.id', '=', 'force_id')
        ->leftJoin('targets', 'targets.id', '=', 'hinteractions.target_id')->where('herbs.id', $id)
        //I would like to use the query 2 here to select effects.name with hinteraction.id used in this query to get effects' name in this query (I might have one to many).
        ->get();

问题2:

$hinteractions_has_effects = DB::table('hinteraction_has_effects')
                     ->select(DB::raw('effect_id, hinteraction_id','effects.name'))
                     ->where('hinteraction_has_effects', '=', hinteraction.id (from the query 1))
                     ->get();

在查询1中,我检索了一些信息,如hinterractions\u id。
我想使用这些提示并在查询2中使用它们。
最好的方法是合并两个查询(1和2),只得到一个有说服力的查询。
你知道吗?

jmp7cifd

jmp7cifd1#

试试下面的查询,让我知道这是否是你要找的-

$informations_plante = DB::table('herbs')
        ->select('herbs.name as hname', 'herbs.sciname', 'herbs.id as herbid','hinteractions.id as hinteractionid','hinteractions.note as hinteractionnote','hinteractions.force_id','targets.name as targetname', 'forces.name as force_name', 'effects.id as effects_id', 'effects.name as effects_name')
        ->leftJoin('hinteractions', 'herbs.id', '=', 'herb_id')
        ->leftJoin('forces', 'forces.id', '=', 'force_id')
        ->leftJoin('targets', 'targets.id', '=', 'hinteractions.target_id')->where('herbs.id', $id)
        //added below lines
        ->leftJoin('hinteraction_has_effects', 'hinteraction_has_effects.hinteractons_id', '=', 'hinteractions.id')
        ->leftJoin('effects', 'hinteraction_has_effects.effects_id', '=', 'effects.id')
        ->get();

嗯!

相关问题