如何在供应商包类中实现应用模型类?

问题描述

如何在我的供应商包中使用另一个类? 我想实现“可搜索”和“可查看”并将我的 SEO morphOne 关系添加Rinvex\Categorizable 之类的包中,如何在不向此包中添加代码的情况下执行此操作{从供应商包之外}?>

解决方法

您可以尝试从您需要的包中扩展类并在那里添加关系。 像这样:

namespace App\Models;

use App\Models\Product;
use Spatie\Searchable\Searchable;
use CyrildeWit\EloquentViewable\Contracts\Viewable;
use Rinvex\Categories\Models\Category as RinvexCategory;

class Category extends RinvexCategory implements Searchable,Viewable
{
    // Add relactions,override RinvexCategory methods or anything that you need :)
    public function products()
    {
        return $this->hasMany(Product::class);
    }
}

并在您的其他代码中使用 App\Models\Category

,

您可以在应用中创建模型并扩展包(供应商)模型。然后定义任何你想要的东西,添加新的特征或者你可以覆盖方法。 您可以使用您的模型而不是软件包提供的模型。

例如:

use Rinvex\Categories\Models\Category;

class MyModel extends Category {

  use MyExampleTraits,SearchableTraits;

  // You can add a new column to the table by publishing package migrations
 // or you can create a new migration to add your new columns
 
  public function seo() {
      return $this->morphOne(Seo::class,'seoable');
  }
}

注意,上面的代码只是为了给你提示的演示。希望对您有所帮助。