сравнить два массива Laravel - PullRequest
       21

сравнить два массива Laravel

0 голосов
/ 15 сентября 2018

У меня есть статьи, которые могут содержать разные теги.Например, 5 штук: (php, html, css, laravel, js) И у меня есть группы, которые также могут содержать разные теги.Например 4 штуки: (laravel, php, html, css)

Я уже определил отношения, и это работает.Чего мне до сих пор не хватает, так это связи статьи с группой.

В Articlecontroller я использую это так:

$article->groups()->sync($group->id);

Article Model

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

    public function tags()
    {
        return $this->morphToMany('App\Tag', 'taggable');
    }

Tag Model

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

public function groups()
{
    return $this->morphedByMany('App\Group', 'taggable');
}

Модель группы

public function tags()
{
    return $this->morphToMany('App\Tag', 'taggable');
}

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

Контроллер

$groups = $user->groups()->latest()->with('tags')->paginate(20);
$mostvotedarticle = Article::where('type', 4)->whereIn('privacy', [1, 3])->orderByVotes()->first(); //show only article with the same tags
$imagearticle = Article::with('comments')->whereIn('type', [4, 5])->where('status', 1)->latest()->paginate(30); //show only articles with the same tags

Теперь я хотел бы сравнить теги групп и теги сообщений.Если сообщения имеют те же теги, что и группа, я хочу отобразить сообщения.

1 Ответ

0 голосов
/ 16 сентября 2018

просто проверьте на равенство

$equal = ($tagsFromPost == $tagsFromGroup) //TRUE if both have the same values but NOT in order
$equal = ($tagsFromPost === $tagsFromGroup) //TRUE if both have same values in SAME order

тогда что-то вроде

if($equal){
    <statements>
}

проверить на ЛОЖЬ if(!$equal)...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...