donglei1616 2018-03-12 10:48
浏览 76
已采纳

Laravel 5.4:按标签搜索

This works fine but what I want to know is if there is a better way to do a search for tags in Laravel. Thanks.

Tag model:

class Tag extends Model
{

    public function noticias()
    {
        return $this->morphedByMany('App\Models\Noticia', 'taggable');
    }

    // ...
}

Noticia model:

class Noticia extends Model
{

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

    // ...

}

SearchController

public function tag($id){

    $noticias= Noticia::all();
    $data['noticias'] = [];
    foreach($noticias as $value){
        foreach($value->tags as $tag){
            if($tag->id == $id){
                $data['noticias'][] = $value;
            }
        }
    }

    return view('web.buscar.index');
}
  • 写回答

2条回答 默认 最新

  • douqian1296 2018-03-12 11:19
    关注

    use whereHas()

    $noticias= Noticia::with('tags')->whereHas('tags', function($q) use ($id){
               $q->where('id',$id);
          })->get();
    

    To get only ids use pluck()

    $noticias= Noticia::whereHas('tags', function($q) use ($id){
               $q->where('id',$id);
          })->pluck('id');
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥30 vmware exsi重置后的密码
  • ¥15 易盾点选的cb参数怎么解啊
  • ¥15 MATLAB运行显示错误,如何解决?
  • ¥15 c++头文件不能识别CDialog
  • ¥15 Excel发现不可读取的内容
  • ¥15 UE5#if WITH_EDITOR导致打包的功能不可用
  • ¥15 关于#stm32#的问题:CANOpen的PDO同步传输问题
  • ¥20 yolov5自定义Prune报错,如何解决?
  • ¥15 电磁场的matlab仿真
  • ¥15 mars2d在vue3中的引入问题