С Eloquent е много лесно да извличате релационни данни. Вижте следния пример с вашия сценарий в Laravel 5.
Имаме три модела:
-
Статия (принадлежи към потребител и категория)
-
Категория (има много статии)
-
Потребител (има много статии)
- 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');
}
}
- Category.php
<?php
namespace App\Models;
use Eloquent;
class Category extends Eloquent {
protected $table = "categories";
public function articles() {
return $this->hasMany('App\Models\Article');
}
}
- 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();
и можете да използвате това така:
//retrieve user name
$article->user->user_name
//retrieve category 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