我对此感到非常困惑!
在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
答案 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));
INPUT
或RECURSIVE
。答案 5 :(得分:0)
您的代码在通过身份验证后应该可以正常工作,看来您不是基于错误消息。由于您返回json,因此我认为这是一个api请求。 Api-routes在Laravel中使用另一个身份验证驱动程序作为默认设置(令牌与会话)。更改驾驶员/后卫或将路线从routes/api.php
移至routes/web.php
。
您可以在config/auth.php
中更改驱动程序。