Intereting Posts
Преобразуйте это цифровое подписание php в Delphi Не удалось вернуть результат широты / долготы в Javascript JSON из запроса PHP MySQL Перенаправление на другой URL-адрес при нажатии кнопки «Назад» с помощью javascript Перерыв большого файла во множество небольших файлов с PHP Google App Engine getImageServingUrl с именем файла загрузки session_id () не получает переменные сеанса VARCHAR (4) хранит больше символов, чем четыре PHP strtotime () «первый понедельник февраля» возвращается во второй понедельник, если 1 февраля – понедельник proxy prob! em, используя simplexml_load_file в php TripleDES Шифрование на C # и PHP не выходит одинаково (PKCS7, ECB)? Список белых списков в настройке фильтра HTML Довольно URL-адреса в фреймворках PHP Doctrine2 – «класс» не является допустимым сущностью или отображенным суперклассом CodeIgniter Validation в библиотеке не принимает обратный вызов Тестирование уязвимостей безопасности в веб-приложениях: лучшие практики?

Как присоединиться к трём столам по модели laravel eloquent

У меня три таблицы

Таблица статей

id title body categories_id user_id 

Таблица категорий

  id category_name 

Таблица пользователей

  id user_name user_type 

Я хочу показать статьи с их именем категории вместо category_id и user_name вместо user_id. Я стараюсь как этот запрос. Это работа!

 $articles =DB::table('articles') ->join('categories', 'articles.id', '=', 'categories.id') ->join('users', 'users.id', '=', 'articles.user_id') ->select('articles.id','articles.title','articles.body','users.username', 'category.name') ->get(); 

Но я хочу сделать по-чертенько. Пожалуйста, как я мог это сделать?

С Eloquent очень легко получить реляционную проверку данных в следующем примере с вашим senario в 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(); 

и вы можете использовать это как

 //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

Пытаться:

 $articles = DB::table('articles') ->select('articles.id as articles_id', ..... ) ->join('categories', 'articles.categories_id', '=', 'categories.id') ->join('users', 'articles.user_id', '=', 'user.id') ->get();