Php laravel在验证存在时在users表中获取用户id |调用api的用户?
我已经开始使用laravel,我很喜欢它。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')
我为移动开发者编写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表(或再次启动另一个查询?)([从验证器返回请求数据])