Php laravel在验证存在时在users表中获取用户id |调用api的用户?

Php laravel在验证存在时在users表中获取用户id |调用api的用户?,php,laravel,validation,authentication,orm,Php,Laravel,Validation,Authentication,Orm,我已经开始使用laravel,我很喜欢它。 我为移动开发者编写API。 我在id\u user上使用了很多带有连接的表。 因此,我总是需要id\u用户。 我有如下列的表用户: 1.id 2.令牌 3.全名 我做如下验证: $result=$request->validate([ 'token' => 'required|unique|exists:users' ] ]); $users=DB::table('users')

我已经开始使用laravel,我很喜欢它。
我为移动开发者编写API。
我在id\u user上使用了很多带有连接的表。
因此,我总是需要id\u用户。

我有如下列的表用户:
1.id
2.令牌
3.全名

我做如下验证:

    $result=$request->validate([
        'token' => 'required|unique|exists:users'
        ]
    ]);
    $users=DB::table('users')
    ->whereExists(function ($query) {
        $query->select(DB::raw(1))
              ->from('orders')
              ->whereRaw('orders.user_id = users.id');
    })
    ->get();
    $id_user=$users->id;
对于以上代码,我总是在
$result

但是我想要这个令牌的id,我在其他表中使用它作为唯一的。 因此

我提出以下问题如下:

    $result=$request->validate([
        'token' => 'required|unique|exists:users'
        ]
    ]);
    $users=DB::table('users')
    ->whereExists(function ($query) {
        $query->select(DB::raw(1))
              ->from('orders')
              ->whereRaw('orders.user_id = users.id');
    })
    ->get();
    $id_user=$users->id;
但我的问题是,如果在laravel验证中,“
unique |存在:users
”检查users表中存在的唯一记录,当它找到该记录时,它验证该约束并(返回true),它必须将该唯一记录存储在某处

我在哪里可以买到这张唱片? 如果laravel没有此功能,他们必须添加它


为什么我要加入用户表(或再次启动另一个查询?)并使流程变得昂贵?

您需要创建模型并设置关系(用户和订单)

在orders表上设置外键

$table->foreign('user_id')->references('id')->on('users');
那么这应该是查询

 'token' => 'required|unique:users|exists:users'

   $order = Order::find(1)->user()->where('token_in_orders_table', 'token_in_users_table')->first();
   return $order;
或为订单模型创建资源

class OrderController extends Controller
{
   public function index(Request $request)
   {
//validate token
'token' => 'required|unique:users|exists:users'
//then
       return new OrderResource(Order::find(1));
   }
}
资源

class OrderResource extends JsonResource
{

    public function toArray($request)
    {
        return [
            'id' => $this->id,
            'order_details' => $this->order_details,
            'user' => $this->user()->where('token', $request->token)->first(),
        ];
    }
}

您需要创建模型并设置关系(用户和订单)

在orders表上设置外键

$table->foreign('user_id')->references('id')->on('users');
那么这应该是查询

 'token' => 'required|unique:users|exists:users'

   $order = Order::find(1)->user()->where('token_in_orders_table', 'token_in_users_table')->first();
   return $order;
或为订单模型创建资源

class OrderController extends Controller
{
   public function index(Request $request)
   {
//validate token
'token' => 'required|unique:users|exists:users'
//then
       return new OrderResource(Order::find(1));
   }
}
资源

class OrderResource extends JsonResource
{

    public function toArray($request)
    {
        return [
            'id' => $this->id,
            'order_details' => $this->order_details,
            'user' => $this->user()->where('token', $request->token)->first(),
        ];
    }
}

谢谢您的回答。但问题是,如果验证器检查users表中存在的唯一记录,并且在找到该记录时对其进行验证,那么我为什么要加入user表(或者再次启动另一个查询?)。[从验证器返回请求数据]()感谢您的回答。但问题是,如果验证器检查users表中存在的唯一记录,并在找到该记录时对其进行验证,为什么我要加入user表(或再次启动另一个查询?)([从验证器返回请求数据])