Я создаю сайт, на котором пользователи могут купить план на любое предполагаемое время. После того, как они купили план, я создал промежуточное ПО, чтобы проверить, когда план почти завершен (70% в плане), а затем отправил уведомление. Теперь проблема в том, что я пытаюсь выяснить, было ли данное уведомление уже отправлено, прежде чем отправлять другое уведомление. Я использовал метод уведомления базы данных.
Чтобы достичь этого, мне нужно было создать модель уведомлений для взаимодействия с моей таблицей уведомлений.
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Notification extends Model
{
protected $table= "notifications";
}
Рассматриваемая посуда
public function handle($request, Closure $next)
{
// dd(Carbon::now()->format("Y-m-d"));
$plan = Booking::where("user_id", Auth::id())
->where("approve", true)
->where("end_date", '>', Carbon::now()->format("Y-m-d"))
->get();
$i =0;
$save = [];
foreach($plan as $plan){
$save[$i] = (new Plan)->percentageMeter($plan->start_date, $plan->end_date);
if($save[$i] >= 70){
$realNotify= Notification::where("notifiable_id", $plan->user_id)
->get();
foreach($realNotify as $notify){
if($notify->data['plan_id'] == $plan->id && realNotify ==true ){
continue;
}
else{
ComNotify::planAboutToExpire(Booking::find($plan->id));
}
}
continue;
}
$i++;
}
// dd($save);
}
одна из основных причин, по которой у меня возникла эта проблема, заключается в том, что я не могу получить доступ к объекту plan_id, поскольку у него нет собственного столбца таблицы.
Есть ли способ сделать это с помощью Laravel? аккуратный путь.
public function toArray($notifiable)
{
return [
"type"=>"plan_about_to_expire",
"message"=>"Your plan will soon expire on " . $this->plan->end_date,
"plan_id"=>$this->plan->id,
];
}
Мое уведомление для метода Array