Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 03.04.2018 20:31:58

Как организовать связь belongsToMany X->X

Приветствую всех. Все понятно когда требуется организовать связь между users и roles через сводную таблицу users_role

 public function roles()
    {
        return $this->belongsToMany('App\Role');
    }

А как построить отношение если нужно связать статьи друг с другом?
При создании статьи есть поле с мульти-селектом статей, созданных ранее.
Article belogsToMany Article

Не в сети

#2 03.04.2018 21:51:59

TrueKanonir
Откуда: Ташкент
Сообщений: 221

Re: Как организовать связь belongsToMany X->X

Направить связь на саму модель и сделать промежуточную таблицу к примеру:

- id
- article1_id
- article2_id
PHP
// Article.php
public function related()
{
    return 
$this->belongsToMany(Article::class, 'related_article''article1_id''article2_id');
}

Изменено TrueKanonir (03.04.2018 21:52:37)

Не в сети

#3 03.04.2018 23:21:52

Re: Как организовать связь belongsToMany X->X

это тоже сразу в голову пришло

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Post extends Model
{
	public function categories()
    {
        return $this->belongsTo('App\Category', 'category_id');
    }
   public function related()
	{
    return $this->belongsToMany(Post::class, 'posts_post', 'post1_id', 'post2_id');
	}

}

и в момент создания записи получаю следующую ошибку!

ErrorException (E_ERROR)
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'posts_post.post_id' in 'where clause' (SQL: select `posts`.`title` from `posts` inner join `posts_post` on `posts`.`id` = `posts_post`.`post_id` where `posts_post`.`post_id` is null) (View: /home/admin/web/jeell.ru/public_html/vendor/tcg/voyager/resources/views/formfields/relationship.blade.php) (View: /home/admin/web/jeell.ru/public_html/vendor/tcg/voyager/resources/views/formfields/relationship.blade.php)

Не в сети

Подвал раздела