能不能整个注册上来不用在每个orm
时间: 2024-03-11 18:47:06 浏览: 21
在 Laravel 中,如果你需要在多个模型中使用同一个 trait,可以将该 trait 注册到 Laravel 的服务容器中,然后在需要使用的模型中使用 trait 的时候,Laravel 会自动从服务容器中获取该 trait 的实例。
对于你现在的情况,在 webman 中使用 dcat/laravel-wherehasin 这个组件,在多个模型中使用,可以按照以下步骤进行:
1. 创建一个名为 `WhereHasInTrait` 的 trait,将 `Dcat\WhereHasIn\WhereHasIn` 引入到该 trait 中,并实现其中的方法。
```php
use Dcat\WhereHasIn\WhereHasIn;
trait WhereHasInTrait
{
use WhereHasIn;
}
```
2. 在 webman 项目中注册该 trait。在 webman 项目的 `bootstrap/app.php` 文件中,加入以下代码:
```php
// 注册 WhereHasInTrait
app()->singleton(WhereHasInTrait::class, function () {
return new WhereHasInTrait();
});
```
3. 在需要使用该 trait 的模型中,使用该 trait。例如:
```php
use App\Traits\WhereHasInTrait;
class YourModel extends Model
{
use WhereHasInTrait;
public function yourQuery()
{
return $this->whereHasIn('relation', function ($query) {
$query->whereIn('id', [1, 2, 3]);
});
}
}
```
这样,你就可以在多个模型中使用该 trait 了,而不需要在每个模型中都引入一遍。
希望这个方法对你有所帮助!