2024年3月9日发(作者:)
*/
static::deleting(function ($model) {
$class = get_class($model);
info("HasArchive Trait deleting {$class} {$model->id}");
if ($archive = $model->archive) {
$archive->delete();
}
});
static::created(function ($model) {
info(__CLASS__ . __METHOD__);
});
}
/**
* Model has an archive.
*
* @return mixed
*/
public function archive()
{
return $this->morphOne(Archive::class, 'model_has_archive');
}
/**
* Scope of params.
*
* @param $query
* @param array $params
* @return mixed
*/
public function scopeOfParams($query, $params = [])
{
$field = null;
$keyword = null;
$sort = null;
$order = null;
extract($params);
$class = $this->getMorphClass();
$table = $this->getTable();
$query->leftJoin('archives', '_has_archive_id', '=', "{$table}.id")
->where('_has_archive_type', $class)
->select(["{$table}.*"]);
if ($keyword) {
if ($field) {
$query->where(function ($query) use ($field, $keyword) {
$query->orWhere($field, 'regexp', $keyword);
});
} else {
$query->where(function ($query) use ($keyword) {
foreach (['', '_pinyin'] as $field) {
$query->orWhere($field, 'regexp', $keyword);
}
});
}
}
if ($sort && $order) {
$query->orderBy($sort, $order);
}
return $query;
}
/**
* Scope recommended.
*
* @param $query
* @return mixed
*/
public function scopeRecommended($query)
{
return $query->whereHas('archive', function ($query) {
return $query->recommended();


发布评论