【问题标题】:How to get all records in laravel Models如何获取 laravel 模型中的所有记录
【发布时间】:2017-10-23 11:59:44
【问题描述】:

我没有用eloquent,我的模型是这样的。

class drivers extends Model
{
}

我想显示所有司机的记录(每行一条记录)

我的 driver 表有字段 (driver_id,name,tyre_id)

我的 tyre 表有字段 (id, title)

我的bank表有字段(iddriver_idbank

我希望我的记录是这样的......

Driver IdNameBank DetailsTyre Title

100000111AyerAvailableGO

.. 以此类推

如果 driver_id 在银行表中有记录,则银行详细信息应显示可用,否则不适用。

$drivers= Drivers::get();
$myarray = ();
foreach ($drivers as $d){
    $bank = Bank::where('driver_id',$d->driver_id)->first();
    $tyre = Tyre::where('id',$d->tyre_id)->first();
    $myarray[]  = $d->driver_id;
    $myarray[]  = $d->name;
    $myarray[]  = isset($bank) ? "available" ; '';
    $myarray[]  = $tyre->title;

}

这是我尝试过的,我是 laravel 的新手,如何在 laravel 中或使用 DB Table 之类的查询来实现这一点?

【问题讨论】:

  • 好的,所以您基本上需要使用联接或关系才能将表连接在一起。此外,您不想运行->first(),因为这只会获取您需要运行->get(); 然后在刀片文件中使用foreach() 循环的1 个结果。我只能假设轮胎中的iddriver_id 匹配??

标签: php arrays laravel


【解决方案1】:

Laravel 提供了两个非常有用的工具来执行数据库操作 eloquentquery builder。建议尽可能多地使用 eloquent 及其关系,因为它有助于我们通常需要执行的许多常见操作。

现在,如果您想进行更复杂的查询,您可以使用查询构建器,此外,您使用查询构建器的示例如下:

在您的控制器中您进行查询并将数据传递给查看:

$data = DB::table('driver')
          ->leftJoin('bank', 'bank.driver_id','=', 'driver.driver_id')
          ->join('tyre', 'tyre.id','=', 'bank.tyre_id')
          ->select('driver.driver_id as id',
                   'driver.name',
                   'bank.id as bank_id',
                   'tyre.title')
          ->groupBy('driver.driver_id')
          ->get()

在您看来,您可以使用 foreach 循环来显示数据(并且您可以使用条件来显示银行字段):

 <table>
    <thead>
        <tr>
            <th>Driver ID</th>
            <th>Name</th>
            <th>Bank Detail</th>
            <th>Tyre Title</th>
        </tr>
    </thead>
    <tbody>
        @foreach($data as $item)
            <tr>
                <td>{{ $item->id }}</td>
                <td>{{ $item->name }}</td>
                <td>{{ isset($item->bank_id) ? "availible":"N/A" }}</td>
                <td>{{ $item->title }}</td>
            </tr>                     
        @endforeach
    </tbody>
 </table>

同样我建议你阅读 eloquent 的文档并尝试使用它。

https://laravel.com/docs/5.5/queries

https://laravel.com/docs/5.5/eloquent

【讨论】:

    【解决方案2】:

    解决这个问题的好方法是 laravel 关系 这里是链接 laravel documentation

    选择您的驱动程序表作为基表并使用关系获取其他表字段; array_push() 函数将值推送到数组

    【讨论】:

      【解决方案3】:

      另一种方法是使用带有连接的 DB Facade:像这样:

      $users = DB::table('users')
              ->join('contacts', 'users.id', '=', 'contacts.user_id')
              ->join('orders', 'users.id', '=', 'orders.user_id')
              ->select('users.*', 'contacts.phone', 'orders.price')
              ->get();
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-12-22
        • 2016-03-07
        • 2019-02-24
        • 2017-08-22
        • 1970-01-01
        • 1970-01-01
        • 2018-05-31
        • 1970-01-01
        相关资源
        最近更新 更多