这对我来说很难解决。我想防止数据库中相同ID的项目之间出现重复。但是可以在不同的ID之间重复。
例如,当抓取机器人运行时。它抓取一个网站。从不同页面获取“计划名称”。有时,不同的页面具有相同的计划名称。这意味着对于不同的ID可以进行复制。但不是同一页面的项目(我的意思是相同的ID)
下面的代码块。它可以防止所有重复。我不确定如何改善它。
foreach($planNames as $k => $names)
{
$database = [];
$database = [
"place_id" => $insertedPlaceId,
"plan_name" => $names,
"plan_price" => $planPrice[$k],
"people" => $people[$k]
];
if ($place = Plan::where("plan_name", "=", $names)->first()) {
} else {
Plan::insertGetId($database);
$this->line("Plans inserted.");
}
}
答案 0 :(得分:0)
如果我理解正确,那么您想在同一plan_name
中阻止相同的place_id
,因此您应该对此进行查询
$place = Plan::where("plan_name", "=", $names)->where("place_id", $insertedPlaceId)->first();
然后检查其是否为空。
希望有帮助。如果我对您的问题的理解是错误的,请指正。谢谢