我有两个模型:Event和Soundcloud。
两者都被定义为Laravel中的多对多关系,并且工作正常。
我正在保存soundcloud并通过执行此操作来填充数据透视表event_soundcloud
foreach ($data as $artist => $url) {
$soundcloud = Soundcloud::firstOrNew(['artist_name' => $artist, 'link' => $url]);
$event->soundclouds()->save($soundcloud);
}
每10分钟调用一次该函数,每次将相同的记录添加到数据透视表中。
有没有办法做同样的事情,但只有在已经不存在的情况下才在数据透视表中添加记录? 谢谢
答案 0 :(得分:0)
这是我做的工作。我猜你不能一步到位
using (SqlConnection conn = new SqlConnection(cs))
{
SqlCommand cmd = new SqlCommand("spInsOrg", conn);
cmd.CommandType = CommandType.StoredProcedure;
var outParam = cmd.Parameters.Add("@orgID", SqlDbType.Int);
outParam.Direction = ParameterDirection.Output;
cmd.Parameters.Add("@orgName", SqlDbType.NVarChar).Value = txtOrgName.Text;
cmd.Parameters.Add("@orgCity", SqlDbType.NVarChar).Value = txtCity.Text;
cmd.Parameters.Add("@orgArea", SqlDbType.NVarChar).Value = txtArea.Text;
cmd.Parameters.Add("@orgTel", SqlDbType.NVarChar).Value = txtTele.Text;
cmd.Parameters.Add("@orgEmail", SqlDbType.NVarChar).Value = txtEmail.Text;
cmd.Parameters.Add("@orgType", SqlDbType.NVarChar).Value = txtOrgType.Text;
cmd.Parameters.Add("@orgStatus", SqlDbType.NVarChar).Value = txtStatus.Text;
cmd.Parameters.Add("@strOwner", SqlDbType.VarChar).Value = User.Identity.Name;
cmd.Parameters.Add("@db_tstamp", SqlDbType.DateTime2).Value = DateTime.Now;
conn.Open();
cmd.ExecuteNonQuery();
var orgId = (int)outParam.Value;
SqlCommand cmdloc = new SqlCommand("spInsLoc", conn);
cmdloc.CommandType = CommandType.StoredProcedure;
}