如何解决如何检查用户ID是否存在于外部表中
我需要检查外部表中是否存在用户 ID。我有两张三桌,分别是员工、包装和切割。表包装和切割都有staff_id列我需要检查员工是属于包装还是切割。那么我如何实现这一目标。
包装表
Schema::create('packaging',function (Blueprint $table) {
$table->increments('id');
$table->integer('staff_id');
$table->string('business_name');
$table->string('tax_id');
$table->string('phone_number');
$table->timestamps();
});
切割台
Schema::create('cutting',function (Blueprint $table) {
$table->increments('id');
$table->integer('staff_id');
$table->string('business_name');
$table->string('tax_id');
$table->string('phone_number');
$table->timestamps();
});
我尝试在员工模型中使用belongsTo 和hasOne 关系进行检查。但它没有用。
public function packaging()
{
return $this->hasOne(\App\Models\Admin\PackagingCompany::class,'staff_id');
}
解决方法
您应该应用外键约束。见docs
Schema::create('packaging',function (Blueprint $table) {
$table->increments('id');
$table->foreign('staff_id')->references('id')->on('staff');
$table->string('business_name');
$table->string('tax_id');
$table->string('phone_number');
$table->timestamps();
});
这将阻止您在没有有效 packaging
的情况下保存 staff_id
记录
您还可以在输入存储员工的任何地方根据包装模型应用验证。这将进入您注入控制器的 form request。
public function rules()
{
return [
'staff_is' => 'exists:staff',];
}
您还提到您需要检查员工是否与 packaging
或 cutting
表相关联。
根据您提供的迁移中的关系类型,员工可能同时属于 packaging
和 cutting
。这就是你想要的吗?
在这种情况下,您可以在 packaging
模型上创建 cutting
和 User
关系。
public function packaging()
{
$this-> hasMany(Packaging::class)
}
然后通过执行以下操作查询具有任何 packaging
记录的用户:
// Retrieve all users that have at least one packaging record...
$users = User::has('packaging')->get();
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。