Ajax 序列化Laravel查询生成器

Ajax 序列化Laravel查询生成器,ajax,url,serialization,laravel,query-builder,Ajax,Url,Serialization,Laravel,Query Builder,我希望能够使用laravel构造查询,并将其序列化为url字符串。 这将允许我创建路由,该路由将取消查询生成器的序列化,运行查询,并生成一个显示数据库结果的视图 例如,要实现刷新kryo发布的帖子列表的按钮: http://example.com/ajax/posts.php?name=kryo&order_by=created_at&order_type=desc php只是一个路由,它在url参数中取消序列化、验证和运行查询,并将结果提供给视图 也许这在一般情况下并不有用,但我个人认为它特别

我希望能够使用laravel构造查询,并将其序列化为url字符串。 这将允许我创建路由,该路由将取消查询生成器的序列化,运行查询,并生成一个显示数据库结果的视图

例如,要实现刷新kryo发布的帖子列表的按钮:

http://example.com/ajax/posts.php?name=kryo&order_by=created_at&order_type=desc

php只是一个路由,它在url参数中取消序列化、验证和运行查询,并将结果提供给视图

也许这在一般情况下并不有用,但我个人认为它特别适合ajax请求。如果有人知道如何将其作为某种性质的laravel插件来实现,那就太棒了。

我将试着给你一个基本的想法: 在
Laravel
中,您必须创建一个
route
来向函数/方法发出请求,因此首先您需要创建一个
route
,它将侦听
ajax
请求,例如:

Route::get('/ajax/posts', array('uses' => 'PostController@index', 'as' => 'showPosts'));
现在,在视图中创建指向此路线的链接,要创建链接,您可以尝试以下操作:

$url = to_route('showPosts');
如果您使用类似以下内容:

<a class='ajaxPost' href="{{ $url }}?name=kryo&order_by=created_at&order_type=desc">Get Posts</a>
$('.ajaxPost').on('clcik', function(e){
    e.preventDefault();
    var url = $(this).attar('href');
    $.getJSON(url, function(response){
        $.each(response, function(key, value){
            // loop... you may use $(this) or value
        });
    });
});
PostController
controller类中,创建索引方法:

class PostController extends BaseController {

    public function index()
    {
        $name = Input::get('name');
        $order_by = Input::get('order_by');
        $created_at = Input::get('created_at');
        $order_type = Input::get('order_type');

        $posts = Post::whereName($name)->orderBy($order_by, $order_type)->get();
        if(Request::ajax()) {
            return Response::json($posts);
        }
        else {
            // return a view for non ajax
        }
    }
}
如果要将呈现视图从服务器端作为
HTML
发送到
JavaScript
处理程序,则将
getJson
更改为
get
,而不是
return Response::json($posts)使用

return View::make('viewname')->with('posts', $posts);

在这种情况下,请确保视图不会扩展主
布局。这可能不是您所需要的,但它为您提供了如何实现它的想法。

这将非常有用,无论您如何制定一个适用于所有Laravel查询方法的通用解决方案?不仅仅是名字和订单?