【发布时间】:2022-01-08 19:25:51
【问题描述】:
我有一个问题,我无法理解,就像逻辑上一样。
情况如下:
我有一个用户提交申请,该申请可以是:
-
被用户取消
-
被公司取消
-
公司认可
现在为了避免有人多次提交工作申请,我需要检查其中任何一个值是否为真,这是我的申请迁移:
public function up()
{
Schema::create('bewerbungens', function (Blueprint $table) {
$table->id('Bewerbung_ID');
$table->string('bewerber_email');
$table->bigInteger('Stellenanzeigen_ID');
$table->boolean('is_Accepted')->default(false);
$table->date('accept_Date')->nullable();
$table->boolean('is_Canceled')->default(false);
$table->date('cancel_Date')->nullable();
$table->boolean('is_Canceled_Bewerber')->default(false);
$table->date('cancel_Date_Bewerber')->nullable();
});
}
现在在我处理应用程序提交的控制器中,我首先检查用户是否有一个活动的应用程序,然后使用此查询检查这三列的值:
$tmp = DB::table('bewerbungens')
->where('bewerber_email', $request->email)
->where('Stellenanzeigen_ID', $request->Stellenanzeigen_ID)
->where('is_Canceled_Bewerber', '=', false)
->orWhere('is_Accepted', '=', false)
->orWhere('is_Canceled', '=', false)
->count();
因此,第一部分是检查该用户是否有针对此特定职位发布的申请。但是我只是不明白我需要如何检查其中一个值是否为真。
我想过为每一列单独查询,然后在 if 语句中检查它们,如下所示:
$tmp = DB::table('bewerbungens')
->where('bewerber_email', $request->email)
->where('Stellenanzeigen_ID', $request->Stellenanzeigen_ID)
->count();
$tmp1 = DB::table('bewerbungens')
->where('bewerber_email', $request->email)
->where('Stellenanzeigen_ID', $request->Stellenanzeigen_ID)
->get('is_Canceled_Bewerber');
$tmp2 = DB::table('bewerbungens')
->where('bewerber_email', $request->email)
->where('Stellenanzeigen_ID', $request->Stellenanzeigen_ID)
->get('is_Accepted');
$tmp3 = DB::table('bewerbungens')
->where('bewerber_email', $request->email)
->where('Stellenanzeigen_ID', $request->Stellenanzeigen_ID)
->get('is_Canceled');
$a = $tmp1[0]->is_Canceled_Bewerber;
$b = $tmp2[0]->is_Accepted;
$c = $tmp3[0]->is_Canceled;
if ($tmp != 0 && isFalse($a) && isFalse($b) && isFalse($c)) {
....
}
感谢您的任何意见,因为我现在感觉自己很笨,脑子里好像有一个巨大的障碍。
【问题讨论】:
-
无论这些字段的状态如何,他们是否可以多次发布同一职位?如果他们关闭了申请,他们可以为同一个工作提交新的申请吗?
-
是的,如果他们自己关闭了申请,他们可以重新申请!
-
对不起,一旦他们被公司接受或拒绝,他们就不能再申请了。所以当
is_Canceled或is_Accepted为真时。当is_Canceled_Bewerber在现有应用程序中为真时,他们可以重新申请 -
只是一个建议:使用状态列而不是is_Canceled,is_Accepted 多个列
-
@Garry 是的,这将是最好和最干净的解决方案!但是我不允许这样做,这是针对 uni 的,我们必须在开始编程之前给出最终的数据库设计,如果我现在更改某些内容,它会对我的成绩产生负面影响,因为他们说当我们需要更改某些内容时我们的计划很糟糕:/
标签: php mysql laravel eloquent logic