Auth :: user()有效,但是Auth :: user()-> id在where查询中断断续续吗?

时间:2019-11-22 08:40:59

标签: laravel eloquent

我对此感到非常困惑!

在laravel控制器中:

$user = Auth::user();
return $user;

返回整个用户对象

$user = Auth::user()->id;
return $user;

按预期返回$ user的ID

但是,如果我将确切的内容放入查询中,例如:

$user = Auth::user();
$query = Model::where('user_id', $user->id)->get();

return $query;

我收到一个错误,试图获取非对象的'id'属性!

这怎么可能?

在测试此功能时,我还检查了100次登录。

进行编辑以添加我也尝试过的内容:

$query = Model::where('user_id', 1)->get();

效果很好

编辑以显示功能:

$user = Auth::id();

        $result = Lesson::where('user_id', $user)
            ->whereNotNull('notes')
            ->get();

return response()->json($result, 200);

预期结果:带有“注释”列的对象列表。

实际结果:空的[]和错误消息说无法获取非对象的ID

6 个答案:

答案 0 :(得分:0)

尝试一下:

$query = Model::where('user_id', Auth::user()->id)->get();
return $query;

答案 1 :(得分:0)

  

尝试

     $user_id = Auth::user()->id;
     $query = Model::where('user_id', $user_id)->get();
     return $query;

答案 2 :(得分:0)

不要在模型中使用Auth。 您可以在User和您的模型之间设置一个关系,并执行以下查询:

Auth::user()->relation()->get();

答案 3 :(得分:0)

如果Model不包含任何具有该用户ID的原始字符,则会发生此错误。确保您要查询的Model中具有原始数据,以按用户ID获取数据。

答案 4 :(得分:0)

您应该尝试一下

    $(SELECTOR).trigger('change');


this code!

    (function ($) {
    var phone_category = document.querySelector("#block-phonesandhours-block > div.phonelist > select");
    var phone_items = document.querySelectorAll("#block-phonesandhours-block > div.phonelist > .items > div");

    $(phone_category).on("change", function (e) {
        e.preventDefault();
        var selection = $(this).val();
        selection = selection.replace(/\s+/g, '-');

        $(phone_items).each(function(){
            if($(this).attr('class') == selection) {
                $(this).css("display","block");
            } else {
                $(this).css("display","none");
            }
        });
    });

    var hour_category = document.querySelector("#block-phonesandhours-block > div.hourlist > select");
    var hour_items = document.querySelectorAll("#block-phonesandhours-block > div.hourlist > .items > div");

    $(hour_category).on("change", function (e) {
        e.preventDefault();
        var selection = $(this).val();
        selection = selection.replace(/\s+/g, '-');

        $(hour_items).each(function(){
            if($(this).attr('class') == selection) {
                $(this).css("display","block");
            } else {
                $(this).css("display","none");
            }
        });
    });


    $(hour_category).select2({
        containerCssClass: "wrap",
        minimumResultsForSearch: -1,
        dropdownPosition: 'below'
    }).trigger('change');

    $(phone_category).select2({
        containerCssClass: "wrap",
        minimumResultsForSearch: -1,
        dropdownPosition: 'below'
    }).trigger('change');
}(jQuery));


  • 由于您传递了非对象的属性而发生错误。
  • 即使在错误解决之后,也请重新启动INPUTRECURSIVE
  • 如果可能,上传错误的屏幕截图。

答案 5 :(得分:0)

您的代码在通过身份验证后应该可以正常工作,看来您不是基于错误消息。由于您返回json,因此我认为这是一个api请求。 Api-routes在Laravel中使用另一个身份验证驱动程序作为默认设置(令牌与会话)。更改驾驶员/后卫或将路线从routes/api.php移至routes/web.php

See docs for auth

您可以在config/auth.php中更改驱动程序。