I have an issue I just cant get my head around, like logically.
Here is the situation:
I have an user who an submit an application, said application can either be:
-
Canceled by the user
-
canceled by the company
-
accepted by the company
Now to avoid someone submitting an application for a job multiple times I need to check if either of those values are true, here is my migration for an application:
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();
});
}
Now in my Controller where I handle the submission of an application I first check if the user has an active application & I check the values of those three columns with this query:
$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();
So the first part is to check IF there is an application by this user to this particular job posting. However I just don't get how I need to check if one of those values is true.
I thought about making a separate query for each column and then check them in an if statement, like so:
$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)) {
....
}
I am thankful for any input because I feel so dumb right now and have like a huge blockage in my head.
source https://stackoverflow.com/questions/70635679/multiple-where-conditions-with-several-different-cases
Comments
Post a Comment