This commit is contained in:
dimon8
2026-01-07 19:29:49 +00:00
parent 31b79d70c5
commit d8a8759504
14 changed files with 363 additions and 78 deletions

42
app/Models/AiTask.php Normal file
View File

@@ -0,0 +1,42 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class AiTask extends Model
{
use HasFactory;
protected $fillable = [
'user_id',
'name',
'prompt_template',
'is_active',
];
protected $casts = [
'is_active' => 'boolean',
'created_at' => 'datetime',
'updated_at' => 'datetime',
];
// Связь с пользователем (если шаблон пользовательский)
public function user()
{
return $this->belongsTo(User::class);
}
// Общие (глобальные) шаблоны — где user_id IS NULL
public function scopeGlobal($query)
{
return $query->whereNull('user_id');
}
// Активные шаблоны
public function scopeActive($query)
{
return $query->where('is_active', true);
}
}

View File

@@ -11,29 +11,24 @@ class Component extends Model
protected $fillable = [
'name',
'component_type_id',
'price',
'component_type_id',
'specifications',
'is_official',
'created_by_user_id',
];
protected $casts = [
'specifications' => 'array', // Автоматически преобразует JSON в массив
'is_official' => 'boolean',
'created_at' => 'datetime',
'updated_at' => 'datetime',
'specifications' => 'array', // автоматически преобразует JSON в массив
];
// Связь с типом компонента
public function type()
{
return $this->belongsTo(ComponentType::class, 'component_type_id');
}
// Связь с пользователем (если добавил пользователь)
public function createdBy()
public function user()
{
return $this->belongsTo(User::class, 'created_by_user_id');
}
public function componentType()
{
return $this->belongsTo(ComponentType::class, 'component_type_id');
}
}

View File

@@ -0,0 +1,35 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class PcBuildComponent extends Model
{
use HasFactory;
protected $fillable = [
'pc_build_id',
'component_id',
'quantity',
];
protected $casts = [
'quantity' => 'integer',
'created_at' => 'datetime',
'updated_at' => 'datetime',
];
// Связь с сборкой
public function build()
{
return $this->belongsTo(PcBuild::class);
}
// Связь с компонентом
public function component()
{
return $this->belongsTo(Component::class);
}
}

View File

@@ -24,6 +24,7 @@ class User extends Authenticatable
'name',
'email',
'password',
'custom_field'
];
/**