mirror of https://github.com/4xmen/xshop.git
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
82 lines
1.7 KiB
PHP
82 lines
1.7 KiB
PHP
<?php
|
|
|
|
namespace App\Models;
|
|
|
|
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
|
use Illuminate\Database\Eloquent\Model;
|
|
use Spatie\Translatable\HasTranslations;
|
|
|
|
class Slider extends Model
|
|
{
|
|
|
|
|
|
use HasFactory, HasTranslations;
|
|
|
|
public $translatable = ['body'];
|
|
|
|
protected $casts = [
|
|
'dataz'
|
|
];
|
|
|
|
public function imgUrl()
|
|
{
|
|
if ($this->image == null) {
|
|
return asset('/assets/upload/logo.svg');
|
|
}
|
|
|
|
return \Storage::url('sliders/optimized-' . $this->image);
|
|
}
|
|
|
|
public function imgOriginalUrl()
|
|
{
|
|
if ($this->image == null) {
|
|
return asset('/assets/upload/logo.svg');
|
|
}
|
|
|
|
return \Storage::url('sliders/' . $this->image);
|
|
}
|
|
|
|
public function author()
|
|
{
|
|
return $this->belongsTo(User::class);
|
|
}
|
|
|
|
public function getDatazAttribute()
|
|
{
|
|
$result = [];
|
|
foreach (json_decode($this->data) as $item) {
|
|
$result[$item->key] = $item->value;
|
|
}
|
|
|
|
return $result;
|
|
}
|
|
|
|
|
|
public static function addData($key, $defaultValue = null)
|
|
{
|
|
foreach (Slider::all() as $item) {
|
|
$data = json_decode($item->data, true);
|
|
$data[] = ['key' => $key, 'value' => $defaultValue];
|
|
$item->data = json_encode($data);
|
|
$item->save();
|
|
}
|
|
}
|
|
|
|
public static function remData($key)
|
|
{
|
|
foreach (Slider::all() as $item) {
|
|
$tmp = $item->dataz;
|
|
$data = [];
|
|
foreach ($tmp as $k => $v) {
|
|
if ($key != $k) {
|
|
$data[] = ['key' => $k, 'value' => $v];
|
|
}
|
|
}
|
|
|
|
$item->data = json_encode($data);
|
|
$item->save();
|
|
}
|
|
}
|
|
|
|
}
|