Laravel-如何添加另一个联接以获取多个表

时间:2018-12-31 02:59:32

标签: php mysql laravel eloquent

您好,我这里有1个连接表,这是我的连接语句。但是我只有一个连接语句,并且只获取1个表,我需要另外4个表来连接或获取,所以如何在此sql连接查询中做到这一点

让我们假设我需要添加以下表:productsstocksfoodsbeverage

我的加入查询语句

$getairId = DB::table('aircrafts')
  ->join('movies','movies.aircraft_id','=','aircrafts.aircraft_id')
  ->select('movies.*')
  ->where('aircrafts.aircraft_id','=', $airid)
  ->get();

如何添加另一个联接

2 个答案:

答案 0 :(得分:0)

我是新来的laravel,但是我写了两个联接来检索created_byupdated_by类别表中的名称以及用户表中的名称

这是我的查询

$result = DB::table('categories')
            ->leftJoin('users as created_table', 'created_table.id', '=', 'categories.created_by')
            ->leftJoin('users as updated_table', 'updated_table.id', '=', 'categories.updated_by')
            ->select('categories.*','created_table.name as created_by','updated_table.name as updated_by')
            ->paginate(3);

请添加尽可能多的联接并根据您的要求进行定制

添加屏幕截图

categories表数据

enter image description here

users表数据

enter image description here

刀片文件可消除数据

@extends('layouts.app')

@section('content')
<div class="container">
    <div class="row justify-content-center">
        <div class="col-md-8">
            <div class="card">
                <div class="card-header">
                    Category 
                    <strong style="float:right;"><a href="{{ url('/category/add') }}">Add</a>  | </strong>
                 </div>

                <table cellpadding="5" cellspacing="5" border="1">
                    <tr>
                            <td>#</td>
                            <td>Category Name</td>
                            <td>Created Date</td>
                            <td>Created By</td>
                            <td>Updated By</td>
                    </tr>
                    <?php $sno = 0 ?>
                    @foreach($result as $data_key => $data)
                    <!-- {{ $sno++ }}  -->

                    <tr>
                            <td>{{ $loop->iteration }}</td>
                            <td>{!! $data->category_name !!}</td>
                            <td>{!! $data->created_at !!}</td>
                            <td>{!! $data->created_by !!}</td>
                            <td>{!! $data->updated_by !!}</td>
                    </tr>

                    @endforeach
                </table>

                <div class="card-header">
                    {{ $result->links() }}
                 </div>


            </div>
        </div>
    </div>
</div>
@endsection

,然后附加类别列表的屏幕截图n

答案 1 :(得分:0)

或者您可以寻求雄辩的关系laravel eloquent relationship。如果您想使用较少的联接查询,这将对您有所帮助。

EX。您可以像这样获取飞机的详细信息

在飞机上雄辩地添加此功能

 public function movie()
    {
        return $this->hasOne('App\Movie','aircraft_id','aircraft_id');
    }

您可以在控制器中像这样使用它

$getairId = DB::table('aircrafts')->with('movie')->get();