我需要让 Laravel Eloquent 地实现两个表的内部连接

select materials.id,
        material_lists.name, material_lists.cost,
        colors.code, colors.hex, colors.name,
        materials.color_cost, materials.estimation, materials.remarks
    from materials
    inner join
    material_lists on materials.material_id = material_lists.id
    inner join
    colors on colors.id = materials.color_id
    where carpet_id = '2'

最佳答案

如果你想使用 Eloquent 那么你应该:

  • 创建与 Material 和 Material 列表表关联的模型。
  • 建立两个模型之间的关系,如下所示:

  • 在 Material 模型类中,您应该具有一对多类型的关系:
     public function MaterialsList {
        return $this->haveMany ('MatrialLists_ModelName')
     }
    

    和“belongsTo”类型关系在 MaterialsLists 模型类中以相反的方式。
     public function Materials {
        return $this->belongsTo ('Materials_ModelName')
     }
    

    3.你可以像这样从 Materials 对象中引用 MaterialsList 对象属性:
     $materialsListCollection = $materials ->MaterialsLists->all();
    

    其中 $materials 是 Materials Model 的实例。

    如果 Eloquent 不是强制性的,那么您可以使用 Query Builder 中的 join 方法与 DB 外观类似:
    $collection = DB::table('materials')
     join('material_lists' , 'materials.id' , '=','material_lists,id') ->
     join('colors' , 'colors.id' , '=','materials.colors,id') ->
     select ('materials.id', 'material_lists.name', 'material_lists.cost',
        'colors.code', 'colors.hex', 'colors.name' 'materials.color_cost',
         'materials.estimation', 'materials.remarks')
          ->where('carpet_id' , '2')->get()
    

    希望能帮助到你 :)

    关于php - Laravel Eloquent 地实现两张表的内连接,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47478098/

    10-09 15:38