Да.Он находит связанный профиль, используя отношения, которые вы определили в своей модели профиля.
После определения отношения мы можем получить соответствующую запись, используя динамические свойства Eloquent.Динамические свойства позволяют получить доступ к методам отношений, как если бы они были свойствами, определенными в модели:
Вот простой пример из документации , которая поможет вам понять:
Допустим, у вас есть таблица posts
и таблица comments
:
Нам нужно определить связь между этими двумя таблицами.
Отношение один ко многимиспользуется для определения отношений, когда одной модели принадлежит любое количество других моделей.Например, сообщение в блоге может иметь бесконечное количество комментариев.
Примечание: в вашей таблице comments
должен быть внешний ключ, ссылающийся на таблицу posts
, например post_id
, в этом случае, если вы используете другойимя, которое вы должны сообщить, что в вашем отношении:
Помните, Eloquent автоматически определит правильный столбец внешнего ключа для модели Comment .По соглашению, Eloquent возьмет имя «модели змеи» модели-владельца и добавит к ней суффикс with _id
.Таким образом, в этом примере Eloquent будет предполагать, что внешний ключ модели Comment равен post_id
.
В вашей модели Post вы можете сделать:
<?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');
}
}
И в вашей модели 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
Этот пример будет печатать каждый текст комментария из поста, который мы получаем в контроллере.