《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
文档 更新父级时间戳
@lym125 看清楚问题,是多态关联!
都是一样的
同问,morphToMany关联怎么更新时间戳
@UpGod @伯洛芒果汁
用
commentable
属性获取父级,再用touch
方法更新时间戳,http://implode.io/GSejzH@warmlight morphToMany是多对多,中间表没有model。 两个主表不存在父级子级吧? sync更新的
$arr = $model->terms()->sync(array_filter($input['terms']));
if(array_filter($arr)){
$model->touch();
}
原始写法了,看了下代码。laravel好像不支持更改中间表的自动识别两个主表是否有时间戳字段并更新。
只是在同步的时候,判断分别判断两个主表是否有touch并更新。
就是上面的写法可以改为在 term 模型中添加touchs属性。 这样中间表更新的时候就可以自动更新了,但是这样的话。 更改term表内容的时候,同样会自动更新。 看自己的取舍了。
@伯洛芒果汁 @warmlight touch() 方法是做什么用的?
@warmlight 那个代码,为什么不直接
$post->touch()
?@UpGod 逻辑判断,关联数据相比旧的是否有改变。
touch就是更新时间戳
可以在需要更新时间戳模型的另外一个模型中添加
$touchs=[]
,里面内容为需要更新模型类名的复数,小驼峰形式,
这样同步操作关联关系就会自动更新相对的父级模型时间戳。
@superSnail $touches 数组中包含的是自定义的需要被更新的父级模型关联。
Illuminate\Database\Eloquent\Model.php 中 finishSave()方法。当数据有变,默认进行 touch。

使用可变变量去操作,所以和什么形式无关,只需要保持 $touches 中关联名和模型中定义的关联方法名一致。
@伯洛芒果汁 在 save() 中传入 ['touch' => false] 即可。
。。。。