Php 拉雷维尔:路线上的状况

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

我有一个应用程序在后端使用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 user_id为4,则链接将返回true,否则返回false。

出于某种原因,无论我在
user::find()
中设置的值是什么,它都会返回true

配置文件表的示例:


先试试看 希望这会有所帮助

您编写了一个子查询,它是
User::find(4)
,它将为您提供一个集合对象,并且在主查询中,您需要检查它是否退出where条件。因此,您需要从对象中获取id
User::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
。抱歉,此选项无效。蒂姆的回答有解决办法,对我来说没问题。