У меня есть эти модели со следующими полями, заключенными в скобки. У пользователя может быть много сообщений, а у сообщений может быть много категорий. Как мы можем добиться их с помощью laravel eloquent.
User [id, name]
Post [id, user_id, post_title]
PostType [id,post_id, category_desc]
В модели пользователя
public function posts(){
return $this->hasmany('App\Post');
}
В модели Post
public function categories(){
return $this->hasmany('App\PostType');
}
В контроллере
$result = User::with('post')->get();
который вернет пользователей, причем каждый пользователь будет иметь записи о публикации. Но как добавить категории в набор результатов?






Вы можете включить удаленные отношения с помощью точечной записи:
$result = User::with(['post', 'post.categories'])->get();
Альтернативным решением, особенно если вы хотите приносить сообщения и категории сообщений каждый раз, когда вы захватываете пользователя, было бы использование массива $ appends в модели User и Post, чтобы автоматически извлекать эти отношения с каждым запросом. Например, ваша модель Post будет включать это вверху:
class Post extends Model
{
$appends = array('categories');
...
И ваша модель User будет выглядеть примерно так:
class User extends Authenticatable
{
$appends = array('posts');
...
Это будет автоматически включать эти категории вместе с сообщениями каждый раз, когда вы добавляете объект User.
Спасибо за альтернативное решение eResourcesInc. Примем к сведению и это.
Спасибо, Девон, протестировано и работает как положено. Ты гуру.