За допомогою Eloquent дуже легко отримувати реляційні дані. Перевірте наступний приклад із вашим сценарієм у Laravel 5.
У нас є три моделі:
1) Стаття (належить користувачеві та категорії)
2) Категорія (має багато статей)
3) Користувач (має багато статей)
1) Article.php
<?php
namespace App\Models;
use Eloquent;
class Article extends Eloquent{
protected $table = 'articles';
public function user()
{
return $this->belongsTo('App\Models\User');
}
public function category()
{
return $this->belongsTo('App\Models\Category');
}
}
2) Category.php
<?php
namespace App\Models;
use Eloquent;
class Category extends Eloquent
{
protected $table = "categories";
public function articles()
{
return $this->hasMany('App\Models\Article');
}
}
3) User.php
<?php
namespace App\Models;
use Eloquent;
class User extends Eloquent
{
protected $table = 'users';
public function articles()
{
return $this->hasMany('App\Models\Article');
}
}
Ви повинні розуміти взаємозв'язок та налаштування бази даних у моделях. Користувач має багато статей. Категорія має багато статей. Статті належать користувачеві та категорії. Після налаштування взаємозв’язків у Laravel стає легко отримати відповідну інформацію.
Наприклад, якщо ви хочете отримати статтю за допомогою користувача та категорії, вам потрібно буде написати:
$article = \App\Models\Article::with(['user','category'])->first();
і ви можете використовувати це так:
$article->user->user_name
$article->category->category_name
В іншому випадку вам може знадобитися отримати всі статті в межах категорії або всі статті конкретного користувача. Ви можете написати це так:
$categories = \App\Models\Category::with('articles')->get();
$users = \App\Models\Category::with('users')->get();
Ви можете дізнатись більше на http://laravel.com/docs/5.0/eloquent