Laravel - 将数据库中的逗号分隔值与表单数据进行比较

时间:2015-01-05 19:27:09

标签: php laravel laravel-4

我正在开发一个应用程序,其中我在MySQL中有一个名为“tags”的列,此列的数据用逗号分隔,就像1,2,3

我有一个表单,我将从中传递数据说2,这个数据应该与标签列中的数据比较说1,2,3

我写过像这样的查询

$linkdetails->where('tags','LIKE',Input::get('tags'))->get();

我知道我需要在这里使用爆炸,但我对这种Laravel语法很困惑。

1 个答案:

答案 0 :(得分:0)

因为你很好地问我这是怎么做的:

  1. 创建一个至少包含tagsname的表id以及包含link_tagtag_id <的数据透视表link_id / LI>
  2. 添加模型Tag
  3. 创建关系。我假设你有类似Link模型的东西:
  4. LinkTag

    有多对多的关系

    链接

    class Link extends Eloquent {
        public function tags(){
            return $this->belongsToMany('Tag');
        }
    }
    

    标记

    class Tag extends Eloquent {
        public function links(){
            return $this->belongsToMany('Link');
        }
    }
    
    1. 使用标记
    2. 查询链接

      $tags是链接应匹配的标记列表)

      $tags = array('foo', 'bar');
      $linkdetails->whereHas('tags', function($q) use ($tags){
          $q->whereIn('name', $tags);
      })->get();
      

      如果您有可以标记的不同实体,您还应该查看polymorphic relations