У меня логика этой страницы такая: в виде карточек выводятся на экран все помещения в аренду (иными словами объявление о сдаче помещения в аренду). На каждой карточке есть кнопка Дополнительно, которая ведет на страницу, обрабатываемую методом show у контроллера. Вот здесь-то и нужно вывести не просто информацию о помещении, но и о владельце объявления: контактное лицо и название организации
мне кажется вам надо какие-то основы знать/понимать сделайте dd($room)l перед return результат приведите здесь
{#332 ▼ +"id": 1 +"person_id": 1 +"name": "March Hare." +"created_at": "2020-03-23 09:39:55" +"updated_at": "2020-03-23 09:39:55" +"square": 22 +"rent_price": 9654 +"image": null +"description": "Alice, as she heard a little of it?' said the." +"user_id": 4 +"type": "Duchess." +"fio": "Dwight Hahn III" +"name_organization": "Dickens, Walter and Leannon" } Вот что он вернул. Но это неверно. Это помещение с id = 5. Вот скрины из базы (вложение). Получается, у комнаты с номером 5 должен быть привязан человек с id = 3. Однако, он выбирает вообще самого первого пользователя. И это логично, ведь у меня метод first(). А как тогда вытащить данные именно того человека, который привязан к этому помещению? Каким методом вместо fist?
Вот зачем тебе здесь параметр $id, если он не участвует в запросе? Как должен участвовать - не могу знать, не видел твоих таблиц. И если тебе нужно больше одной комнаты вывести, то да, получаешь коллекцию, выводишь циклом foreach. Что ты имеешь в виду? Есть что, необычные? Ты просто не понимаешь и не пытаешься понять, что ты делаешь. Ты хочешь: "напиши вот так, получишь вот это"....
всмысле зачем? это же метод show, он показывает именно одно помещение в более подробном виде. А для вывода всех помещений у меня метод index я имел ввиду не через Room:: а через DB::. А то тут про модель говорили, про конструктор, я сам уже запутался. Неужели нельзя показать одной строчкой кода как должно быть по нормальному? Давно бы решил проблему, ежели бы помогли по-человечески
зачем куда-то передавать? у меня в представлении вот такой код: PHP: <div class="col-4"> <div class="card"> <div class="card-body"> <div class="card-title"> <h4>{{ $room->name }}</h4> </div> <div class="card-img" style="background-image: url({{ $room->image ?? asset('img/default.jpg') }})"></div> <p class="card-text">{{ $room->description }}</p> </div> <ul class="list-group list-group-flush"> <li class="list-group-item">Площадь: {{ $room->square }} кв.м.</li> <li class="list-group-item">Стоимость: {{ $room->rent_price }} руб/мес</li> </ul> <a href="{{ route('room.show', ['id' => $room->id]) }}" class="btn btn-outline-primary">Дополнительно</a> </div> </div> Кнопка Дополнительно и ведет на страницу конкретного помещения. Полагаю, нужно where в запросе с id этого помещения? Но я пробовал, ошибку выдает
Ага, нужно Откуда база знать может, что тебе возвращать, если ты не указал этого явно? Пробовать-то надо с умом, не методом тыка.
и опять же - как это должно выглядеть?) уже в миллионный раз спрашиваю, ибо пробовал добавлять раздел where, но ошибку выдавало PHP: $room = DB::table('rooms') ->join('people', 'rooms.person_id', '=', 'people.id') ->select('rooms.*', 'people.*') ->where('rooms.person_id', '=', 'people.id') ->first();
@lordconst, я тебе много раз писал, что в запросе должен быть тот $id, который пришёл в аргументе, ты опять показываешь запрос без него... Ты какую сущность пытаешься получить, Room, что-ли? --- Добавлено --- Вот это прочитано от начала до конца? https://laravel.com/docs/7.x
ну да. но только у нас ведь это Id помещения, а в запросе он нигде не используется. Я имею ввиду по логике запроса: мы связываем одну таблицу с другой по полям, которые с id помещения не связаны напрямую. они просто в одной таблице находятся, поля эти. с английским не очень, я читал русские документации. я еще раз повторю: новичку хоть миллион ссылок скинь, он не понимает как правильно искать нужное среди информации. По себе знаю с обеих сторон баррикад. Поэтому прошу просто показать где этот чертов id должен быть. Я так гораздо быстрее все пойму, чем если мячик друг другу перекатывать каждый раз
печалька. Русские все сайты отстают по версиям значительно А почему нигде не используется? --- Добавлено --- Объясняю: при освоении нового фреймворка, документация читается с первой страницы по последнюю. Лично мне интересно понять логику, почему это $id надо получить в экшене, но не использовать в запросе. Вот расскажешь, тогда будем кодом жанглировать. Поскольку я помогаю на "волонтёрских" началах, я делаю это так, как считаю нужным.
а это по видеоуроку так. Причем вроде бы автор объясняет что и как, я этот курс искал еще специально. Это не тот, что на ютубе один парень делает по официальной документации, а другой человек. Мне показалось, объясняет более понятно что-ли. К примеру, для себя я многое понял, чего не было с тем на ютубе. Полагаю, он сделал его, чтобы в адресной строке отображался id помещения. А я сам хз где его нужно использовать в запросе) поэтому и создаю здесь тему
Ну дай хоть ссылку. А то я вот 6 лет уже зарабатываю деньги на php, но не знаю, глупый такой, каким образом база узнаёт про id, если ей его не передать....
он на рутрекере, но даже если и так, вряд ли будешь скачивать) так как написать запрос, чтобы он выдал правильную инфу?
PHP: $room = DB::table('rooms') ->join('people', 'rooms.person_id', '=', 'people.id') ->select('rooms.*', 'people.*') ->where('rooms.id', '=', $id) ->first(); неужели не очевидно?
спасибо. Я так и попробовал изначально, когда речь зашла о where. Но я $id прописывал без знака доллара и в кавычках, поэтому ошибку выдавало)
compact - особый случай, отход от правил. Так может работать только она. Как раз за такие фокусы многие не любят PHP.