Как получить метод соединения laravel без использования команды foreach? - PullRequest
0 голосов
/ 29 октября 2019

Как я могу получить метод соединения laravel без использования команды foreach? Как я могу решить это без использования команды Foreach

{{$ app-> name}}, которую я использовал для этого типа. Но я постоянно получаю сообщение об ошибке.

Контент файла Controller.php

public function show($id)
    {
        $show = Duty::where('duty_id', '=', $id)->count();

        if ($show!=0){
            $app = DB::table('users')
                ->join('duties', 'duties.appointed_user_id', '=', 'users.id')
                ->select('users.name', 'duties.*')
                ->get();
            $data = Duty::where('duty_id', '=', $id)->get();

            return view('duty.show', compact('data', 'app'));
        }
        else
        {
            return redirect()->back()->with('status', 'Sorun oluştu');
        }

    }

Свойство [имя] не существует в этом экземпляре коллекции. (Просмотр: D: \ xampp \ htdocs \ person \ resources \ views \ duty \ show.blade.php)

Ответы [ 2 ]

0 голосов
/ 29 октября 2019

Вот для чего нужны отношения. В этом случае вы можете сделать User::with(:duties'). Или в вашем случае, наоборот, вероятно, будет работать лучше Duty::find($id)->with('user')

0 голосов
/ 29 октября 2019

У вас есть список (коллекция) пользователей, а не один пользователь. Вот почему вы не можете получить только name от него, потому что он не знает, какой из них получить имя. Эта проблема не имеет ничего общего с использованием метода join.

Если вы ожидаете получить только один результат по вашему запросу, вы можете изменить значение с ->get() на ->first(). Это позволит вам звонить {{$app->name}} без перерыва. Но делайте это только в том случае, если вы ожидаете одного результата и используете сначала.

Если вы ожидаете более одного пользователя, невозможно отобразить имена без зацикливания.

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