Scrape ettigim datalari DB'ye gonderdigim sirada ayni ID'ye sahip datalar arasinda duplication'i onlerken, farkli ID'ler arasinda duplication'a izin verdirmeye calisiyorum. Fakat su ana kadar yazdiklarimla pek de sonuc alamadim.
Olayi kisaca ozetleyecek olursam. Bir sitenin farkli sayfalarindan "plan"lar scrape ediyorum. Tabi bazi planlar farkli sayfalarda ayni isimle mevcut. Bu yuzden DB'ye aktarirken eger place_id
leri farkliysa plan'i duplicate etmesini istiyorum. Fakat ayni place_id'ye ait plan'lari birden fazla kez tekrar etmemesi gerekiyor. (yani 1 place_id icine 1 den fazla plan girebilir, ama ayni plan 1 defa girecek.)
Asagidaki sekilde bir query yazdim.
foreach($planNames as $k => $names)
{
$database = [
"place_id" => $insertedPlaceId,
"plan_name" => $names,
"plan_price" => $planPrice[$k],
"people" => $people[$k]
];
$place = Plan::where("plan_name", "=", $names)->first();
if ($place) {
//do nothing
} else {
Plan::insertGetId($database);
$this->line("Plans inserted.");
}
}
Bu sekilde olusturdugumda ayni plan'i place_id'si ayni ya da farkli olsun sadece 1 kez aliyor. Bu durumu engellemek icin query'yi asagidaki sekilde degistirmeye calistim.
$place = Plan::where("plan_name", "=", $names)->where('place_id', $insertedPlaceId)->first();
Bu kezde datayi insert ederken karman corman insert etmekle kalmiyor. her bot calistiginda ayni place_id icine ayni plan'i defalarca insert ediyor.