53 lines
1.1 KiB
PHP
53 lines
1.1 KiB
PHP
<?php
|
|
|
|
namespace Modules\Bitrix\Traits;
|
|
|
|
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
|
use Illuminate\Database\Eloquent\Relations\MorphOne;
|
|
use Illuminate\Database\Eloquent\Model;
|
|
use Modules\Bitrix\Models\BitrixId;
|
|
|
|
|
|
trait Bitrixable
|
|
{
|
|
private function bitrixable(): MorphOne
|
|
{
|
|
return $this->morphOne(BitrixId::class, 'bitrixable');
|
|
}
|
|
public function bitrixId()
|
|
{
|
|
if ($row = $this->bitrixable()->first())
|
|
{
|
|
return $row->bx_id;
|
|
}
|
|
return false;
|
|
}
|
|
public function setBitrixId($id): bool
|
|
{
|
|
$this->bitrixable()->delete();
|
|
$bitrixId = new BitrixId([
|
|
'bx_id' => $id
|
|
]);
|
|
if ($this->bitrixable()->save($bitrixId))
|
|
{
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
protected static function booted()
|
|
{
|
|
static::deleted(function ($bitrixableItem)
|
|
{
|
|
$this->bitrixable()->delete();
|
|
});
|
|
|
|
static::forceDeleted(function ($bitrixableItem)
|
|
{
|
|
$this->bitrixable()->delete();
|
|
});
|
|
}
|
|
}
|
|
|
|
|