Laravel 4喜欢的条款

har*_*nam 4 mysql laravel eloquent laravel-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'));

    }
Run Code Online (Sandbox Code Playgroud)

这是我在Controller中的代码.我正在使用GitHub上提供的入门套件.

我为这个控制器创建了这个模型

public function search()
{
    return $this->belongsTo('Post', 'user_id');
}
Run Code Online (Sandbox Code Playgroud)

问题是它没有取得标题包含"Lorem ipsum"的结果.它只打印表中的所有值.

如何实现此功能以仅获取包含我的标记/关键字的值.我这样做是为了在laravel网站上添加搜索选项

Vit*_*Kos 9

为什么不为此创建范围?你读过范围文档吗?这是一个例子,我将如何实现这一目标:

范围:

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

并修改您的行动:

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'));

}
Run Code Online (Sandbox Code Playgroud)