与()关系雄辩的地方

时间:2018-02-02 15:38:00

标签: laravel eloquent

我正在尝试从页面分页链接,但它返回相同的链接,“where”不起作用...

控制器:

public function page_load_more($last_id, $pid) {

    $page = Page::where('friendly_url', $pid)
                    ->select('id', 'photo', 'friendly_url', 'name')
                    ->with('ptag', 'get_following')
            ->with(['links' => function($query) use($last_id) {
                            $query->where('id', '<', $last_id);
                        }])
                    ->with(['links.comments.user' => function($query) {
                            $query->select('id', 'name', 'lastname', 'photo', 'friendly_url');
                        }])->first();

    return view('site.list.page.links', compact('page'));
}

JQuery的:

$(window).scroll(function () {
    if ($(document).height() <= $(window).scrollTop() + $(window).height()) {
        var isLoading = false;
        var id = $('.link-shared:last-child').attr("rel");
        var p_id = $(".feed-page-info").attr("rel");

        if (isLoading === false) {
            var isLoading = true;
            $.ajax({
                url: window.location.origin + "/ajax/page/load_more/" + id + '/' + p_id,
                dataType: "HTML",
                beforeSend: function () {

                },
                success: function (response) {
                    $('.page-feed-insert').append(response);
                    var isLoading = false;
                }
            });
        }
    }
});

链接显示:

  

1 2 3

加载更多时的链接:

  

1 2 3

3 个答案:

答案 0 :(得分:0)

交换你的地方和条款并将你的with合并为:

Page::with(['ptag', 'get_following'])->select(...)->where(...)

答案 1 :(得分:0)

如果您想根据关系条件(links.id&gt; $ last_id)限制结果,请尝试使用whereHas方法:

Page::where('friendly_url', $pid)
    ->select('id', 'photo', 'friendly_url', 'name')
    ->whereHas('links', function($query) use ($last_id) {
        $query->where('links.id', '<', $last_id);
    })
    ->with(['ptag', 'get_following', 'links.comments.user' => function($query) {
        $query->select('id', 'name', 'lastname', 'photo', 'friendly_url');
    }])->first();

答案 2 :(得分:0)

使用哪里有效。

在哪里不会包含数据透视表中的对象,但仍然会获得数据。

或者,如果您想申请关系,您可以使用(&#39; relation_name&#39;)或doest(&#39; relation_name&#39;)