我有一个模型叫运动,其采用以下结构Laravel 5 - 删除子模型数据
+----+--------------+-----------------+----------+---------------+--------------+--------------------+----------+-------+--------+---------------------+---------------------+
| id | campaignName | userId | clientId | clientContact | contactEmail | campaignObjectives | acNumber | notes | active | created_at | updated_at |
+----+--------------+-----------------+----------+---------------+--------------+--------------------+----------+-------+--------+---------------------+---------------------+
| 1 | test | 7 | 10 | Mr Fakes | 12345 | sdfsdfsd | 12345 | | 0 | 2016-02-29 11:51:59 | 2016-02-29 13:51:28 |
+----+--------------+-----------------+----------+---------------+--------------+--------------------+----------+-------+--------+---------------------+---------------------+
然后我有一个CampaignTypes模型结构如下
+----+--------------+-----------------+------------+---------------------+---------------------+
| id | campaignType | creativeArrival | campaignId | created_at | updated_at |
+----+--------------+-----------------+------------+---------------------+---------------------+
| 14 | Dynamic | 2016-02-26 | 1 | 2016-02-23 16:00:01 | 2016-02-23 16:00:01 |
+----+--------------+-----------------+------------+---------------------+---------------------+
在这些模型的关系非常简单。一个Campaign可以有许多CampaignTypes和一个CamapignType属于一个Campaign。
在Campaign架构中,我有一个活动列。这是我用来删除广告系列的内容。所以破坏方法如下所示
public function destroy(Campaign $campaign)
{
$campaign->update([
'active' => false
]);
Session::flash('flash_message', 'Campaign deleted');
Session::flash('flash_type', 'alert-success');
return Redirect::route('campaigns.index')->with('message', 'Campaign deleted.');
}
现在虽然它不会引起太多的问题,我目前没有设置任何CampaignTypes行,就好像它的父活动已被删除,被删除。
什么是最好的方式来删除子数据而不实际删除它?
感谢
使用软删除? – matiit
当你“删除”你的父母(真正的软删除它)时,你想让这些活动类型真正被删除,还是他们也会有一个数据库列的值被更改? –
我添加了一个更新的答案,我认为可以更好地解释您的选项。请让我知道,如果我的回答有意义,如果它不完全符合你的要求。 –