Laravel находит запись в другой таблице, связанной с $data

Я просматриваю некоторый код laravel, и у меня есть несколько вопросов относительно кода. В представлении я вижу кусок кода "$data->profile->age". Этот код автоматически находит запись профиля в таблице профилей, связанную с $data? Как он находит связанный профиль?

Контроллер:

return view('new-design.pages.influencer.info')
                ->withData($data)

Вид:

$data->profile->age
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Laravel Scout - это популярный пакет, который предоставляет простой и удобный способ добавить полнотекстовый поиск в ваше приложение Laravel. Он...
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
0
0
1 550
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Я считаю, что в вашей модели для $data есть функция, называемая профилем. Отсюда получается эквивалентный профиль.

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

    public function user()
    {
        return $this->belongsTo('App\User');
    }

И в представлении вы можете написать что-то вроде

$phone->user->name

Теперь за сценой laravel перейдет к телефону и получит значение от user_id для этого телефона. (Если внешний ключ находится в другом столбце, вы также можете указать это). Затем laravel найдет таблицу пользователей с этим user_id и получит строку. Затем покажите имя на просмотре.

Теперь, если есть сложный запрос, вы также можете написать для него функцию в модели.

Ответ принят как подходящий

да. Он находит связанный профиль, используя отношения, которые вы определили в своей модели профиля.

Once the relationship is defined, we may retrieve the related record using Eloquent's dynamic properties. Dynamic properties allow you to access relationship methods as if they were properties defined on the model:

Вот простой пример из документация, который поможет вам понять:

Допустим, у вас есть стол posts и стол comments:

Нам нужно определить связь между этими двумя таблицами.

A one-to-many relationship is used to define relationships where a single model owns any amount of other models. For example, a blog post may have an infinite number of comments.

Примечание: у вас должен быть внешний ключ в вашей таблице comments, ссылающийся на таблицу posts, например post_id, в этом случае, если вы используете другое имя, вы должны сообщить об этом в своем отношении:

Remember, Eloquent will automatically determine the proper foreign key column on the Comment model. By convention, Eloquent will take the "snake case" name of the owning model and suffix it with _id. So, for this example, Eloquent will assume the foreign key on the Comment model is post_id.

В вашей модели Сообщение вы можете сделать:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Post extends Model
{
    /**
     * Get the comments for the blog post.
     */
    public function comments()
    {
        return $this->hasMany('App\Comment');
    }
}


И в вашей модели Комментарий вы должны определить обратную связь

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Comment extends Model
{
    /**
     * Get the post that owns the comment.
     */
    public function post()
    {
        return $this->belongsTo('App\Post');
    }
}

Теперь, если вы хотите получить доступ ко всем комментариям к посту, вам просто нужно получить отношение:

$post = Post::find($id); // find a post
$post->comments; // This will return all comments that belong to the given post

Таким образом, вы в основном получаете к ним доступ, как если бы они были свойством модели, как сказано в документации.

На ваш взгляд, вы могли бы сделать что-то вроде этого:

@foreach($post->comments as $comment)
{
 {{$comment->text}} 
}
@endforeach

В этом примере будет напечатан каждый текст комментария из сообщения, которое мы получаем в контроллере.

Другие вопросы по теме

Добавляйте представление в ViewGroup, только если осталось достаточно места
Не удалось запустить службу с намерением, невозможно добавить окно — нулевой токен недействителен, выполняется ли ваша деятельность?
Какое правильное время для установки непрозрачности фона представления?
Присоединяйтесь к нескольким таблицам mysql и группируйте их по
Таблица прямого просмотра (LUT) и обратная LUT, что это такое? и почему он используется?
Какой макет или представление используется на этом снимке экрана приложения для Android
Как отобразить ChoiceField в django с помощью html-файла?
Переменная от контроллера к представлению без цикла foreach в Laravel
Обучение Postgres тому, как обрабатывать обновление в столбце представления, которое является результатом операции case
Почему псевдонимы, совпадающие с именами столбцов, удаляются при сохранении в виде представления?