2016-12-13 58 views
0

我認爲標題有點混亂,所以我會盡我所能解釋這一點。在一個函數中的多個表的附加()方法(laravel)

我有什麼

汽車模型:

public function users() 
{ 
    return $this->hasMany('User','car_user'); 
} 

用戶模型

public function cars() 
{ 
    return $this->belongsToMany('App\Models\Access\Car','car_user'); 
} 

預訂模型

public function cars() 
{ 
    return $this->belongsToMany('App\Models\Access\Car','car_user'); 
} 

鈣ř遷移:

 $table->increments('id'); 
     $table->string('name')->nullable(); 
     $table->string('age')->nullable(); 
     $table->string('model')->nullable(); 

用戶遷移:

 $table->string('street')->nullable(); 
     $table->string('niehgborhood')->nullable(); 
     $table->string('city')->nullable(); 
     $table->increments('id'); 
     $table->string('name')->nullable(); 

car_user:

 $table->integer('user_id')->unsigned(); 
     $table->foreign('user_id')->references('id')->on('users'); 

     $table->integer('car_id')->unsigned(); 
     $table->foreign('car_id')->references('id')->on('cars'); 

預留:

 $table->increments('id'); 
     $table->string('from_date')->nullable(); 
     $table->string('to_date')->nullable(); 

     $table->string('from_time')->nullable(); 
     $table->string('to_time')->nullable(); 

控制器:方法保存汽車並將其鏈接到用戶標識:

public function store(Request $request) 
{ 
    $user = JWTAuth::parseToken()->authenticate(); 
    $new_car = new Car(); 
    $new_car->name = $request->name; 
    $new_car->age = $request->age; 
    $new_car -> model = $request->model; 
    $new_car->save(); 

    $id = $new_cars->id; 
    $user->cars()->attach($id); 
} 

我試圖瞭解/做

所以在我的控制器上面,當用戶想要買的車,我可以附上用戶ID與車輛ID。

現在,我可以做同樣的事情,如果用戶想租車幾個小時。假設我有一個帶有下拉菜單的表格,顯示用戶想要汽車的時間。我可以保存用戶和他/她想租用的汽車,包括所有這些功能嗎?

這會將時間附加到用戶感興趣的車上並且能夠通過$user->id調用以顯示用戶想要購買和租賃的所有車輛嗎?

謝謝!

更新

感謝阿圖爾Subotkevič我現在可以節省根據他的回答中car_reservation透視表這兩款車和預訂的ID。我試着這樣做是爲了顯示所有的汽車行駛通過此功能

public function hour($id) 
{ 

    $time = Car::with('reservations')->where('id',$id)->get(); 
    dd($time); 
} 

相關的時間,但我得到這個觀點

Collection {#364 ▼ 
    #items: [] 

} 我敢肯定,我有一些汽車掛預約和我預訂型號現在是

public function cars() 
{ 
    return $this->belongsTo('Car','car_reservation'); 
} 

回答

1

否這將無法正常工作。

但有很多方法來處理這類問題。

你應該解釋你真正想做什麼,我們可以給你正確的答案。


編輯

$user = JWTAuth::parseToken()->authenticate(); 

$new_car = new Car(); 
$new_car->name = $request->name; 
$new_car->age = $request->age; 
$new_car->model = $request->model; 
$new_car->save(); 

$time = new Reservation(); 
$time->from_date = $request->from_date; 
$time->to_date = $request->to_date; 
$time->from_time= $request->from_time; 
$time->to_time = $request->to_time; 
$time->save(); 

// Attach the reservation to the car's reservations 
$new_car->Reservation()->attach($time->id); 

// Attach the car to the user cars 
$user->cars()->attach($new_car->id); 

確保你已經在你的模型設定正確的關係:你需要在你的汽車模型訂房關係。

+0

我剛剛編輯了我的問題,請再看看(我想要了解/做什麼) – leo0019

+0

我編輯了我的答案。 –

+0

我認爲汽車和用戶會得到保存,但他們沒有鏈接,因爲我沒有car_reservation數據透視表。這就是爲什麼當我在郵遞員測試它返回SQLSTATE [42S02]:基表或視圖未找到:1146表'injaz.car_reservation'不存在' – leo0019

相關問題