【发布时间】:2018-12-16 21:15:56
【问题描述】:
我正在尝试调用模型事件 - 已删除。当我删除视频时,我还想删除与视频关联的所有 cmets,这工作正常。但我也有提要表,当我删除视频时,我还想删除所有 cmets 和 cmets 提要。现在,当我删除视频时,我会删除 - 视频、视频 cmets、视频提要,但我还需要删除视频评论提要。
问题是,当我删除视频时,如何才能删除 cmets 提要? 检查 VideoController.php 销毁函数
Video.php - 模型
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
use Cviebrock\EloquentSluggable\Sluggable;
class Video extends Model
{
protected $table = 'videos';
public $timestamps = false;
use Sluggable, RecordsFeed;
public static function boot()
{
parent::boot();
}
public function sluggable()
{
return [
'slug' => [
'source' => 'title'
]
];
}
public function comments()
{
return $this->hasMany('App\VideoComment', 'videoid', 'id');
}
public function member()
{
return $this->belongsTo('App\Member', 'userid', 'member_id');
}
}
VideoComments.php - 模型
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class VideoComment extends Model
{
protected $table = 'videos_comments';
public $timestamps = false;
protected $fillable = [
'text', 'userid', 'date'
];
use RecordsFeed;
public function videos() {
return $this->belongsTo('App\Video', 'id', 'videoid');
}
public function member() {
return $this->belongsTo('App\Member', 'userid', 'member_id');
}
}
RecordsFeed.php
<?php
namespace App;
use App\Libraries\Portal;
trait RecordsFeed
{
protected static function bootRecordsFeed() {
static::created(function($model) {
$model->recordFeed('created');
});
static::deleted(function($model) {
$model->deleteFeed('deleted');
});
}
public function feeds() {
return $this->morphMany( Feed::class, 'feedable' );
}
protected function recordFeed($event) {
$this->feeds()->create([
'user_id' => (new Portal)->getMemberID(),
'type' => $event.'_'.strtolower(class_basename($this))
]);
}
protected function deleteFeed($event) {
$this->feeds()->delete();
}
}
VideoController.php 销毁函数
public function destroy($id)
{
$video = Video::findOrFail($id);
$video->comments()->delete();
$video->delete();
Session::flash('success', 'Video deleted');
return redirect()->route('video.index');
}
【问题讨论】:
-
在此处发布您的相关代码。不在 github 上,不在图片上
-
问题是当我删除视频时,如何才能删除 cmets 提要? 通过编程。请发布相关代码,出了什么问题,您尝试了什么以及您期望什么。
-
发布更新的家伙..
标签: php laravel laravel-5 model relational-database