2016-10-07 36 views
2

我有車狀態欄的車表,有「可用」和「故障」。 我也有車隊CRUD,一旦我添加車隊,我想只顯示「可用」狀態的汽車。我應該添加什麼?獲取具體的價值Laravel

這裏是我的車隊控制器代碼:

<?php 

namespace App\Http\Controllers; 

use App\Http\Requests; 
use App\Models\Fleet; 
use App\Models\Car; 
use App\Models\Attendance; 
use App\Helpers\Enums\FleetStatus; 
use App\Models\AttendanceDetail; 
use Illuminate\Http\Request; 
use Yajra\Datatables\Datatables; 
use App\Http\Controllers\Base\MasterController; 
use Route; 
use Illuminate\View\View; 

class FleetController extends MasterController 
{ 
protected $detailView = 'fleet.show'; 
protected $indexView = 'fleet.index'; 
protected $createView = 'fleet.form'; 
protected $editView = 'fleet.form'; 

protected $routeBindModel = 'fleet'; //Route Model Binding name in RouteServiceProvider 
protected $redirectPageWhenFormSuccess = 'fleet.index'; //Route Name 
protected $title = 'Fleet'; 

public function save(Request $request, $obj = null) { 

    if (!$obj) { 
     $obj = new Fleet; 
    } 
    return $this->saveHandler($request, $obj); 
} 

//Must have this method if need datatable; 
public function datatableBuilder($obj = null) { 
    return Fleet::query(); 
} 

public function makeDatatable($obj) { 

    return Datatables::of($obj) 
    ->addColumn('action', function ($model) { 
      return $this->makeActionButtonsForDatatable($model); 
    }) 
    ->editColumn('status', function($model){ 
     return FleetStatus::getString($model->status); 
    }) 
    ->make(true); 
} 

public function render(View $view, $route = null, $obj = null, $method = 'POST') { 
    $statusList = FleetStatus::getArray(); 
    $carStatusList = Car::pluck('plate_no', 'id'); 
    $attendanceList = Attendance::pluck('driver_id', 'id'); 
    $workingHourList = Attendance::pluck('working_hours', 'id'); 
    $view->with(compact('statusList', 'carStatusList', 'attendanceList', 'workingHourList')); 
    return parent::render($view, $route, $obj, $method); 
} 
} 

這裏是我添加表單代碼:

<div class="col-xs-12 col-sm-12 col-md-12"> 
          <div class="form-group"> 
           <label>Car </label> 
           {!! Form::select('car_id', $carStatusList, null, array('class' => 'form-control')) !!} 
          </div> 
         </div> 

回答

0

如果我正確,這明白你的問題將創建可用汽車列表:

Car::where('status','available')->pluck('plate_no', 'id'); 
+1

@Hi感謝隊友。 –

+0

你知道如何顯示驅動程序名稱而不是ID嗎? driver_id鏈接到考勤 - > attendace_detaill->車隊 –

+0

您需要在駕駛模型中添加汽車和駕駛員之間的關係。add public function car(){return $ this-> belongsTo('Models \ Car'); }並在汽車模型中添加函數driver(){return $ this-> hasMany('Models \ Driver'); }假設你在駕駛員和汽車之間有一對多的關係,這將工作。然後去$ car-> driver-> name;您可以將此應用到任何關係更多信息https://laravel.com/docs/5.3/eloquent-relationships – Indra

1

你有沒有嘗試這個辦法:

$carStatusList = Car::where('status', 'available')->pluck('plate_no', 'id') 
+1

@Hi謝謝夥計。 –

1

在模型中添加範圍

public function scopeAvailable($query){ 
    return $query->where('status', '=', 'available'); 
} 

然後你需要的地方使用它:

Car::available()->get() 

Car::available()->pluck('plate_no' , 'id'); 

此處瞭解詳情:https://laravel.com/docs/5.3/eloquent#query-scopes