Php 拉雷维尔:路线上的状况
我有一个应用程序在后端使用Laravel 在Php 拉雷维尔:路线上的状况,php,laravel,Php,Laravel,我有一个应用程序在后端使用Laravel 在web.php中,我定义了以下路径: Route::get('/customize/{id}', function () { if (Profile::where('user_id', User::find(4))) { return true; } return false; }); 基本上我想要例如当user\u id=4时,返回true{id}是配置文件的id因此,如果配置文件的as
web.php
中,我定义了以下路径:
Route::get('/customize/{id}', function () {
if (Profile::where('user_id', User::find(4))) {
return true;
}
return false;
});
基本上我想要例如当user\u id
=4时,返回true
{id}
是配置文件的id
因此,如果配置文件的as user_id为4,则链接将返回true,否则返回false。
出于某种原因,无论我在user::find()
中设置的值是什么,它都会返回true
配置文件表的示例:
先试试看 希望这会有所帮助 您编写了一个子查询,它是
User::find(4)
,它将为您提供一个集合对象,并且在主查询中,您需要检查它是否退出where条件。因此,您需要从对象中获取idUser::find(4)->id
,然后它可以与User\u id
匹配
Route::get('/customize/{id}', function () {
if (Profile::query()->where('user_id','=', User::query()->find(1)->id)->exists()) {
return 'true';
}
return 'false';
});
请尝试以下代码:
Route::get('/customize/{id}', function () {
if (Profile::where('user_id', User::find(4))->first()) {
return true;
}
return false;
});
通过添加
first();您缺少->first()
,或->exists()
,等等。现在,您有一个生成器实例,选中该实例时,它总是true
。将代码更改为Profile::where('user_id',4)->first()
或Profile::where('user_id',4)->exists()
;您将获得一个用户
实例或空
,或真
/假
,而不是总是真
@timlews您是对的<代码>获取
的效果太明显了。但我的路线正确吗?对于我想做什么?->get()
返回一个集合,即使为空
,它仍然是真的
,所以不,->get()
不起作用:)也不是,因为您有4个硬编码。它应该是function($id)
,然后是Profile::where('user\u id',$id)->exists()
。此外,路由不应返回true
或false
,而应返回view()
、response()
或redirect()
,或其他有效的闭包形式。啊,好的,如果这只是一个测试路由,暂时忽略返回
,是的,您应该能够使用auth()->user()->id
,或auth()->id()
(任意一个),但仅当您正在使用Laravel的会话时;ReactJS是一个前端框架,除非您将它们连接起来(不知道如何连接),否则它们的会话彼此独立。是的,如果auth()->user()
为null
,则会发生这种情况,因为null->id
无效:),所以API是“无状态的”auth()->user()
应始终为null
。抱歉,此选项无效。蒂姆的回答有解决办法,对我来说没问题。