2013-07-02 52 views
4
public function getIndex() 
     { 


// Get all the blog posts 
     /*$posts = Post::with(array(
      'author' => function($query) 
      { 
       $query->withTrashed(); 
      }, 
     ))->orderBy('created_at', 'DESC')->paginate(10);*/ 


     $posts =Post::with(array('search' => function($query) 
     { 
      $query->where('title', 'like', '%Lorem ipsum%')->withTrashed(); 
     }))->orderBy('created_at', 'DESC')->paginate(10); 


     // Show the page 
     return View::make('frontend/blog/index', compact('posts')); 

    } 

这是我在Controller中的代码。我正在使用GitHub上提供的初学者软件包。Laravel 4 like clause

我创造了这个模型,这个控制器

public function search() 
{ 
    return $this->belongsTo('Post', 'user_id'); 
} 

问题是,它没有采取地方标题中包含“Lorem存有”的结果。它只是打印表格中的所有值。

我怎样才能实现这个只获取包含我的标签/关键字的值。我这样做是为了搜索选项添加到laravel网站

回答

1

尝试......

$posts =Post::with(array('search' => function($query) 
    { 
     $query->raw_where("title LIKE '%Lorem ipsum%")->withTrashed(); 
    }))->orderBy('created_at', 'DESC')->paginate(10); 

或者沿着这些路线的东西...

$搜索是你的输入

Post::raw_where("match (`title`) against (?)", array($search)) 
    ->orderBy('created_at', 'DESC')->paginate(10); 

编辑

这是怎么回事?

Post::where(DB::raw('MATCH(`title`)'),'AGAINST', DB::raw('("+'.implode(' +',$search).'" IN BOOLEAN MODE)->orderBy('created_at', 'DESC')->paginate(10); 
+0

我已经看到您的帖子在另外一个问题。这是给我错误 – harishannam

+0

调用未定义的方法Illuminate \ Database \ Query \ Builder :: raw_where() – harishannam

+0

在Laravel 4中,该方法是'whereRaw'而不是'raw_where'。通过源代码轻弹会很快告诉你方法名称。 –

0

我认为这是与Laravel预先加载约束实现的一个问题:

对于裁判: -

https://github.com/laravel/laravel/pull/1069 

https://github.com/laravel/laravel/pull/946 
9

为什么不创建这个范围是什么?你读过scopes docs吗? 下面是一个例子,我会如何实现了:

范围:

public function scopeTagged($query, $tag) 
{ 
    return $query->where('title', 'LIKE', '%' . $tag . '%'); 
} 

和修改到你的动作:

public function getIndex() 

{ 

    $posts = Post::tagged($lorem_ipsum)->withTrashed()->orderBy('created_at', 'DESC')->paginate(10); 

    // Show the page 
    return View::make('frontend/blog/index', compact('posts')); 

} 
+0

哇也错过了一个分号..看起来我有点晚了,虽然这个信息将是有用的 –