Laravel Eloquent Join 2 таблицы с разными именами - PullRequest
0 голосов
/ 25 августа 2018

Я хочу объединить 2 таблицы, t_admin и t_article, используя красноречивый laravel.Итак, это таблица t_admin:

id_adm| name   | email
-------------------------
 4    | Arya   | arya@mail.com  
 7    | Andrea | andrea@mail.com
 12   | Adibah | adibah@mail.com

таблица t_article:

id_article | id_admin    | title
--------------------------------
 1         |      4      | AAA  
 2         |      12     | BBB
 3         |      7      | CCC

на основе этих таблиц, t_admin.id_adm = t_article.id_admin.

Это моя модельAdmin.php

 class Admin extends Model
    {
        protected $fillable = [
            'id_adm','name','email',
        ];
        protected $table = 't_admin';
    }

Article.php

class Article extends Model
{
    protected $fillable = [
        'id_article','id_admin','title',
    ];
    protected $table = 't_article';
}

Ответы [ 2 ]

0 голосов
/ 25 августа 2018

Добавьте отношение к моделям, предполагая, что оно одно ко многим

class Admin extends Model
    {
        protected $fillable = [
            'id_adm','name','email',
        ];
        protected $table = 't_admin';


    /**
     * Get the articles for admin.
     */
    public function articles()
    {
        return $this->hasMany('App\Article');
    }

    }



class Article extends Model
{
    protected $fillable = [
        'id_article','id_admin','title',
    ];
    protected $table = 't_article';

    /**
     * Get the user for the article post.
     */
    public function user()
    {
        return $this->belongsTo('App\Admin');

    }
}

Вы можете получить их по

$articles = App\Admin::find(1)->articles;

foreach ($articles as $article) {
    //
}
0 голосов
/ 25 августа 2018

Создайте отношения в вашей модели администратора: Примечание: я предполагаю, что у администратора может быть много статей.

public function articles(){
    return $this->hasMany('App\Article', 'id_admin');
}

Затем, когда вы хотите получить все статьи, принадлежащие администратору, сделайте следующее:

$adminArticles = Admin::find($adminId)->articles

В случае, когда администратор может иметь только одну статью, сделайте это вместо:

public function article(){
    return $this->hasOne('App\Article', 'id_admin');
}

Затем, когда вы хотите получить статью, принадлежащую администратору, сделайте следующее:

$adminArticle = Admin::find($adminId)->article

Читайте здесь для получения дополнительной информации.

Вы также можете использовать конструктор запросов Laravel для самостоятельного написания запросов на присоединение. В вашем случае вы бы сделали это:

$adminArticles = DB::table('t_admin')
            ->join('t_article', 't_admin.id_adm', '=', 't_article.id_admin')
            ->select('t_admin.*', 't_article.title')
            ->get();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...