2016-12-18 5 views
1

я объясню свою структуру первого, так что вы можете понять, что я пытаюсь получитьдисплей конкретные данные функции (Laravel)

1 - автомобиль = имя - модель - возраст

2 - Пользователь = название - город - телефон

3 - Резервирование = FROM_DATE - to_date

4- reservation_user = идентификатор_пользователь - reservation_id

5 - car_user = идентификатор_пользователь - car_id

В view.blade я попытался показать информацию пользователя в таблице и ниже, чтобы описать запрос пользователя (он хочет купить) и ниже этого, если у него есть машина, которую он хочет арендовать (ТОЛЬКО аренда)

таблицы Информация пользователя

стола со всеми автомобилями он просить (как аренду и покупку)

стола с автомобилем ид и дата пользователь хотят машину от-

public function show($id) 
{ 
    $users = User::with('cars')->where('id',$id)->get(); 


    return view('show')->withusers($users); 
} 

, как я спас автомобили для продажи

$id = $new_cars->id; 

    $user->cars()->attach($id); 

в аренду

$id = $new_car->id; 
    $R_id = $time->id; 
    $user->cars()->attach($id); 


    $user->reservations()->attach($R_id); 

проблема

автомобили в аренду, что отображается в обеих таблицах, поскольку в функции я вытащил все машины.

Вопрос

как я могу получить только автомобили с резервированием в одной таблице (третьей таблицы)? Без отображения их во второй таблице

ответ

1

Прежде всего, вы не разработали свою опорную таблицу car_user должным образом. Вы сохраняете связь для User and Car в этой таблице, но вы сохраняете оба типа данных отношений, используя одни и те же свойства, для продажи и аренды, и нет никакой возможности отличить разницу, какую продавать и какую арендуть. Итак, сначала вы должны сделать разницу между обоими типами отношений, используя другое поле в этой сводной таблице, поэтому давайте добавим еще одно поле в таблицу, которое позволит вам узнать тип отношения, например:

Таблица car_user:

user_id | car_id | type 
------------------------ 
1  | 1 | buy 
1  | 2 | rent 

Здесь тип будет использоваться для определения типа отношений, является ли это аренда или продать. Итак, когда вы добавляете отношения, добавьте поле типа (аренда/покупка), но до этого вы должны установить для них отношения.Таким образом, вы можете использовать два различных способа отношения в User модели, например:

// For Rent 
public function rentingCars() 
{ 
    return $this->belongsToMany(Car::class) 
       ->wherePivot('type', 'rent') 
       ->withPivot('type'); 
} 

// For Buy 
public function buyingCars() 
{ 
    return $this->belongsToMany(Car::class) 
       ->wherePivot('type', 'buy') 
       ->withPivot('type'); 
} 

// For both types 
public function buyingCars() 
{ 
    return $this->belongsToMany(Car::class)->withPivot('type'); 
} 

Теперь вы можете запросить для некоторых типов автомобилей, используя что-то вроде этого:

public function show($id) 
{ 
    // Load all cars the user wants to buy 
    $users = User::with('buyingCars')->where('id', $id)->get(); 

    // Notice "withUsers" not "withusers" (you've used "withusers") 
    // Or: view('show')->with('users', $users); 
    return view('show')->withUsers($users); 

    // More examples: 

    // Load all cars the user wants to rent 
    // $users = User::with('rentingCars')->where('id', $id)->get(); 

    // Load all cars the user wants to buy or sell 
    // $users = User::with('cars')->where('id', $id)->get(); 

} 

Теперь, когда вы прикрепление автомобили в User модели, вы должны передать значение для type поля, а также:

// For rent 
$user->cars()->attach($car_id, ['type' => 'rent']); 

// For buy 
$user->cars()->attach($car_id, ['type' => 'buy']); 

Кроме того, когда вы сделать что-то вроде этого:

$user = User::with('cars')->find(1); 

Вы можете проверить погоду автомобиль для аренды или покупки, используя что-то вроде этого:

@foreach($user->cars as $car) 

    {{ $car->name }} 

    // Either buy or rent 
    {{ $car->pivot->type }} 

@endforeach 
+1

не могу тебя отблагодарить человека :) я узнал гораздо больше, чем любой видео Я смотрел – leo0019

+0

Рад, что это помогло. Наиболее желанный :-) –

Смежные вопросы