Laravel / Eloquent - Запрос отчетов в соответствии с текущим пользователем. - PullRequest
0 голосов
/ 07 мая 2018

Мой текущий проект - система управления школой.Сейчас мне нужно сделать следующее:

  • Запросить базу данных, чтобы получить все табели успеваемости, связанные с текущим пользователем;
  • Отображать их в виде;

Основная главная проблема - первая часть, так как я новичок в Eloquent.Я считаю, что могу использовать blade-сервер для построения таблиц для отображения информации из карточек отчетов - при условии, что я могу передать эту информацию при использовании контроллера.

Я установил связь между users и cards, используяhasMany и belogsTo согласно документации Eloquent.В моем CardController у меня есть следующее:

class CardController extends Controller
{
  public function index()
  {

    $card = App\User::find(1)->cards;

    // After querying, return the view, etc
  }
}

В функции отсутствует функциональность, но я не знаю точно, что.Я пробовал некоторые другие вещи, такие как:

  $cards = DB::table('cards')->get();

  return view('viewname');

Здесь я кое-что упускаю из виду, я знаю, но я не могу это понять.Честно говоря, мне все еще неудобно запрашивать базы данных в Laravel даже после прочтения большей части документации.

Любая помощь будет высоко ценится.

1 Ответ

0 голосов
/ 07 мая 2018

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

$user = auth()->user();

но теперь я советую вам зайти на tinker , php artisan tinker в терминале и попробовать это:

$user = App\User::first(); // or change this to App\User::find($someId);
$cards = $user->cards;

И проверьте вывод, дело в том, что это $user->cards слово cards должно быть идентично названию метода, которое вы определили в модели User, поэтому оно должно быть примерно таким в вашей User.php:

public function cards() {
    return $this->hasMany(Card::class);
}

Так что теперь у вас должна быть коллекция доступных карт для этого пользователя, Ваш index метод должен выглядеть следующим образом:

   public function index() {
       $user = auth()->user();
       $cards = $user->cards;
       // Or you can inline it and make it all in one line like this,
       // $cards = auth()->user()->cards;

       return view('someView', compact('cards'));
   }

А в вашем someView.blade.php просто зациклите их, что-то вроде этого:

@foreach ($cards as $card)
    {{ $card->someProperty }}
@endforeach

Надеюсь, это поможет, дайте мне знать, если вам нужно что-то еще.

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