Как получить имя пользователя через идентификатор в Laravel? - PullRequest
1 голос
/ 01 апреля 2019

Я пытаюсь создать форум предложений, где какой-то пользователь может создавать свои предложения для предоставления своих услуг, и я хочу показать имя человека, который создал это предложение, вместо идентификатора.

В моей базе данных есть две таблицы:

  • Таблица предложений: Offers table

  • Таблица пользователей:

Users table

В предложениях у меня есть столбец Professor_id, связанный с идентификатором таблицы пользователей.

Это то, что я имею в своем контроллере, чтобы показать предложения:

public function ofertes(){

    $ofertes = Oferta::all()->sortByDesc('id');

    return view('create.ofertes')->with(compact('ofertes'));
}

и в blade.php у меня есть этот код:

@foreach($ofertes as $oferta)
    <tr>
        <td>Nom : {{$oferta->professor_id}}</td> <br>
        <td>Títol : {{$oferta->titol}}</td> <br>
        <td>Descripció: {{$oferta->descripcio}}</td> <br>
        <td>Data: {{$oferta->created_at}}</td> <br><br>
    </tr>
@endforeach

и вот что показано: ofertes.blade.php

Где написано nom, как я могу показать имя вместо id?

Спасибо!

Ответы [ 3 ]

2 голосов
/ 01 апреля 2019

Если вы указали отношение к professor в своей модели Oferta, вы можете использовать следующий код:

public function ofertes(){

    $ofertes = Oferta::with('professor')->latest()->get();

    return view('create.ofertes')->with(compact('ofertes'));
}

Ваш клинок:

@foreach($ofertes as $oferta)
    <tr>
        <td>Nom : {{$oferta->professor->nom}}</td> <br>
        <td>Títol : {{$oferta->titol}}</td> <br>
        <td>Descripció: {{$oferta->descripcio}}</td> <br>
        <td>Data: {{$oferta->created_at}}</td> <br><br>
    </tr>
@endforeach

Если вы не указали отношение, вам следует добавить следующий метод к вашей модели Oferta (вам может потребоваться немного изменить его в зависимости от ваших пространств имен):

public function professor()
{
    return $this->belongsTo(User::class);
}
0 голосов
/ 01 апреля 2019

Очень просто

public function ofertes(){

    $ofertes = Oferta::with('professor')->latest()->get();
    $users = User::all();

    return view('create.ofertes')->with(compact('ofertes', 'users'));
}

In blade file:

<td>Nom : @foreach ($users as $user)
           @if ($oferta->professor_id === $user->id) $user->nom $user->cognom
           @endif
          @endforeach
</td><br>
0 голосов
/ 01 апреля 2019

Соедините две таблицы, например

$oferta = DB::table('users')
        ->join('offers','users.id','=','offers.professor_id')
        ->select('offers.*','users.nom')
        ->orderby('offers.id','DESC')->get();

Затем вместо {{$oferta->professor_id}} замените {{$oferta->nom}}

Ваша проблема должна быть решена

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...