模型关系设置

This commit is contained in:
2025-04-28 16:45:23 +08:00
parent 87ac792634
commit 994ecb2488
9 changed files with 184 additions and 0 deletions

View File

@@ -3,6 +3,7 @@
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\HasMany;
/**
* 分类表
@@ -13,4 +14,13 @@ class CategoryModal extends Model
protected $table = 'categories';
protected $guarded = [];
/**
* 项目
* @return HasMany
*/
public function projects(): HasMany
{
return $this->hasMany(ProjectModal::class, 'category_id', 'id');
}
}

View File

@@ -3,6 +3,7 @@
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsToMany;
/**
* 框架表
@@ -13,4 +14,13 @@ class FrameworkModal extends Model
protected $table = 'frameworks';
protected $guarded = [];
/**
* 项目关联
* @return BelongsToMany
*/
public function projects()
{
return $this->belongsToMany(ProjectModal::class, 'project_frameworks_relations', 'framework_id', 'project_id');
}
}

View File

@@ -3,6 +3,8 @@
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsToMany;
use Illuminate\Database\Eloquent\Relations\HasMany;
/**
* 标签表
@@ -13,4 +15,13 @@ class LabelModal extends Model
protected $table = 'labels';
protected $guarded = [];
/**
* 项目关联
* @return BelongsToMany
*/
public function projects(): BelongsToMany
{
return $this->belongsToMany(ProjectModal::class, 'project_labels_relations', 'label_id', 'project_id');
}
}

View File

@@ -3,6 +3,8 @@
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Database\Eloquent\Relations\HasOne;
/**
* 订单表
@@ -13,4 +15,22 @@ class OrderModal extends Model
protected $table = 'orders';
protected $guarded = [];
/**
* 用户关联
* @return HasOne
*/
public function user()
{
return $this->hasOne(UserModal::class, 'id', 'user_id');
}
/**
* 订单详情
* @return HasMany
*/
public function items(): HasMany
{
return $this->hasMany(OrderItemModal::class, 'order_id', 'id');
}
}

View File

@@ -3,6 +3,7 @@
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsToMany;
/**
* 项目框架关联表

View File

@@ -3,6 +3,7 @@
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\HasOne;
/**
* 项目标签关联表
@@ -13,4 +14,22 @@ class ProjectLabelRelationModal extends Model
protected $table = 'project_label_relations';
protected $guarded = [];
/**
* 项目
* @return HasOne
*/
public function project(): HasOne
{
return $this->hasOne(ProjectModal::class, 'id', 'project_id');
}
/**
* 标签
* @return HasOne
*/
public function label(): HasOne
{
return $this->hasOne(LabelModal::class, 'id', 'label_id');
}
}

View File

@@ -3,6 +3,9 @@
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsToMany;
use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Database\Eloquent\Relations\HasOne;
/**
* 项目表
@@ -14,4 +17,75 @@ class ProjectModal extends Model
protected $guarded = [];
/**
* 用户关联
* @return HasOne
*/
public function user(): HasOne
{
return $this->hasOne(UserModal::class, 'id', 'user_id');
}
/**
* 作者关联
* @return HasOne
*/
public function author(): HasOne
{
return $this->hasOne(UserModal::class, 'id', 'author_id');
}
/**
* 标签关联
* @return BelongsToMany
*/
public function labels(): BelongsToMany
{
return $this->belongsToMany(LabelModal::class, 'project_labels_relations', 'project_id', 'label_id');
}
/**
* 截图关联
* @return HasMany
*/
public function screenshots(): HasMany
{
return $this->hasMany(ScreenshotModal::class, 'project_id', 'id');
}
/**
* 框架关联
* @return BelongsToMany
*/
public function frameworks(): BelongsToMany
{
return $this->belongsToMany(FrameworkModal::class, 'project_frameworks_relations', 'project_id', 'framework_id');
}
/**
* 技术栈关联
* @return BelongsToMany
*/
public function technologyStacks(): BelongsToMany
{
return $this->belongsToMany(TechnologyStackModal::class, 'project_technology_stacks_relations', 'project_id', 'technology_stack_id');
}
/**
* 功能关联
* @return HasMany
*/
public function features(): HasMany
{
return $this->hasMany(FeatureModal::class, 'project_id', 'id');
}
/**
* 分类关联
* @return HasOne
*/
public function category(): HasOne
{
return $this->hasOne(CategoryModal::class, 'id', 'category_id');
}
}

View File

@@ -3,6 +3,7 @@
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsToMany;
/**
* 技术栈表
@@ -13,4 +14,13 @@ class TechnologyStackModal extends Model
protected $table = 'technology_stacks';
protected $guarded = [];
/**
* 项目关联
* @return BelongsToMany
*/
public function projects(): BelongsToMany
{
return $this->belongsToMany(ProjectModal::class, 'project_technology_stack_relations', 'technology_stack_id', 'project_id');
}
}

View File

@@ -3,6 +3,8 @@
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Database\Eloquent\Relations\HasOne;
/**
* 用户表
@@ -13,4 +15,31 @@ class UserModal extends Model
protected $table = 'users';
protected $guarded = [];
/**
* 项目关联 - 上传视角
* @return HasMany
*/
public function projects(): HasMany
{
return $this->hasMany(ProjectModal::class, 'user_id', 'id');
}
/**
* 项目关联 - 作者视角
* @return HasMany
*/
public function projectsAuthor(): HasMany
{
return $this->hasMany(ProjectModal::class, 'author_id', 'id');
}
/**
* 角色关联
* @return HasOne
*/
public function roles(): HasOne
{
return $this->hasOne(RoleModal::class, 'id', 'role_id');
}
}