我试图在网络上找到一些建议,但我无法...
我想对Laravel中的关系使用save
方法中的一些约束,我将举一个例子来解释它
假设我有两个模型Post
和Comment
,如Laravel文档中所示:
class Post extends Model
{
public function comments()
{
return $this->hasMany('App\Comment');
}
}
和
class Comment extends Model
{
public function post()
{
return $this->belongsTo('App\Post');
}
}
现在,我想检查一个新的comment
插入,例如,如果该post
的注释已经存在十多个,我想避免插入。
我按照以下说明插入新的comment
$comment = new Comment();
$post->comments()->save($comment);
我可以在这些行之前进行检查,但是我想在其他地方进行检查(检测到所有保存),是否存在类似的情况?否则,有什么“标准方法”可以做到吗?
答案 0 :(得分:2)
雄辩的Model
类中有一些您完全需要的辅助方法。由于需要在插入之前进行检查,因此您想使用static::creating
或static::saving
方法。如果要在创建和更新注释时都进行验证,请使用saving
。在Comment
模型中添加以下内容:
protected static function boot()
{
parent::boot();
static::creating(function (Comment $comment) {
// Do validation on the $comment model.
// Feel free to make sql queries or do anything you need.
// Throw an exception if your validation fails.
});
}
答案 1 :(得分:0)
您可以使用count()来实现。就像beliw一样,您可以尝试。如果行的注释少于10条,它将保存,否则将返回到url。
$comment = new Comment();
If(count ($post->comments) <10){
$post->comments()->save($comment);
}
else
return back() ;//dont save return back;
希望这会有所帮助