Показать 2 таблицы в 1 представлении - PullRequest
0 голосов
/ 31 мая 2019

Я хочу отобразить 2 таблицы в 1 представлении

примерно так:

{{ $match->title }}
{{ $distance->distance }}

, но не могу заставить его работать.

Это мой контроллер:

public function bikeGamesMatch(Request $request){ 
    $matches = BikeGame::find($request->id);
    $distances = Distance::find($request->id);
    dd($matches);                          
    return view('bike_games.match', compact("matches","distances"));
}

почему $distances возвращается к null, когда я dd(): это?

это мое мнение:

<th scope="col" class="text-center"><strong>Game Title:</strong>
             @foreach($matches as $match)
             {{ $match->title }}
             @endforeach
              </th>
                <th scope="col" class="text-center"><strong>Target: Distance</strong>
              @foreach($distances as $distance) 
             {{ $distance->distance }} {{ $distance->unit }}
             @endforeach
</th>

ЕслиЯ делаю это, вид дает мне 404

$matches = BikeGame::find($request->id)->firstOrFail();
$distances = Distance::find($request->id)->firstOrFail();

Что я здесь не так делаю?

Ответы [ 4 ]

1 голос
/ 31 мая 2019

use имеет одно отношение между двумя моделями: BikeGame & Distance.

дайте тогда уникальный идентификатор. как Bike_id & Distance_id.

Модель Bikegame =>

public function distance(){
    return $this->hasOne('App\Distance','Distance_id', 'id');
}

Модель расстояния =>

public function bike()
{
    return $this->belongsTO('App\Bikegame', 'Distance_id','id');
}

в вашем контроллере, например.

 $bike = BikeGame::with('distance')->find($id);
 $bike->bikename    = request('bikename');
 $bike->distance->distacekm = $request->distacekm;
 $bike->distance->dismm = $request->dismm; 

попробуйте этот шаг

0 голосов
/ 31 мая 2019

Попробуйте эти изменения

$matches = BikeGame::where('id',$request->id)->first();
$distances = Distance::where('id',$request->id)->first();

Надеюсь, это полезно для вас.

0 голосов
/ 31 мая 2019

перед использованием foreach попробуйте проверить

isset($matches) && count(matches) >0

если это условие истинно, тогда используйте foreach.

0 голосов
/ 31 мая 2019

Попробуйте изменить:

$matches = BikeGame::find($request->id);
$distances = Distance::find($request->id);

до

$matches = BikeGame::find($request->get('id'));
$distances = Distance::find($request->get('id');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...