Laravel Polymorphic HasOne,两个不同的类别模型到同一个项目
Laravel Polymorphic HasOne ,two different categories model to the same item
我正在尝试将两个不同的类别模型用于相同的 items
table。
我有 3 个模型
系统类别
Schema::create('system_categories', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('name');
$table->timestamps();
});
用户类别
Schema::create('user_categories', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('name');
$table->integer('user_id');
$table->timestamps();
});
项目
Schema::create('items', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('name');
$table->integer('categoryable_id');
$table->string('categoryable_type');
$table->timestamps();
});
项目类别可以来自 system_categories
或 user_categories
table
我看到了一些多态关系,但它是关于两个不同的模型如何属于一个类别,而不是关于模型如何属于两个不同类别的模型
谢谢。
可以做到,首先你的架构看起来没问题,但你想将 catagoryable_id 设置为 bigInteger 以匹配 2 个类别表的 id 列。
然后你会设置你的模型
class Item extends Model
{
public function categoryable()
{
return $this->morphTo();
}
}
class SystemCategory extends Model
{
public function items()
{
return $this->morphMany('App\Item', 'categoryable');
}
}
class UserCategory extends Model
{
public function items()
{
return $this->morphMany('App\Item', 'categoryable');
}
}
显然这是假设您的模型位于 App 命名空间中
我正在尝试将两个不同的类别模型用于相同的 items
table。
我有 3 个模型
系统类别
Schema::create('system_categories', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('name');
$table->timestamps();
});
用户类别
Schema::create('user_categories', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('name');
$table->integer('user_id');
$table->timestamps();
});
项目
Schema::create('items', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('name');
$table->integer('categoryable_id');
$table->string('categoryable_type');
$table->timestamps();
});
项目类别可以来自 system_categories
或 user_categories
table
我看到了一些多态关系,但它是关于两个不同的模型如何属于一个类别,而不是关于模型如何属于两个不同类别的模型
谢谢。
可以做到,首先你的架构看起来没问题,但你想将 catagoryable_id 设置为 bigInteger 以匹配 2 个类别表的 id 列。
然后你会设置你的模型
class Item extends Model
{
public function categoryable()
{
return $this->morphTo();
}
}
class SystemCategory extends Model
{
public function items()
{
return $this->morphMany('App\Item', 'categoryable');
}
}
class UserCategory extends Model
{
public function items()
{
return $this->morphMany('App\Item', 'categoryable');
}
}
显然这是假设您的模型位于 App 命名空间中