问题描述
如何在我的供应商包中使用另一个类? 我想实现“可搜索”和“可查看”并将我的 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');
}
}
注意,上面的代码只是为了给你提示的演示。希望对您有所帮助。