如何对一个动态的雄辩查询做一个手术



是否有任何方法可以中断和更改雄辩查询的组件和范围?

in order添加多租户我添加了一个全局作用域对于我的模型,通过tenant_id过滤结果. 它工作得很好。

问题是我发现了500多个硬编码的'where条件'和'create语句'到处都是。例如:

$notification_type= NotificationTypes::where('id', '2')->get();

$tickets = Tickets::create( $title, $body, $sender, '1'); // 1 as statusID

等。

这是一个问题,因为我使用单DB方法进行多租户,这些id必须相对于租户。例如,在上面的第一个查询中,我不想要Id为'2'的'NotificationTypes',但我想要'second' NotificationType与tenant_id(该列的Id可以是4或7或其他)。

我可以找到一种方法来正确计算这些相对id的确切数量。但是是否有办法找到一个雄辩对象的先验范围和条件并改变它们呢?

我正在寻找一种方法来添加多租户项目,而不改变现有的代码。像一个模块或插件。

你可以在Laravel中使用作用域

public function scopeActive($query)
{
$query->where('active', 1);
}

然后在控制器中调用

$notification_type = NotificationTypes::active()->get();

更多参考文档:https://laravel.com/docs/9.x/eloquent#query-scopes

动态范围

public function scopeActive($query, $value)
{
return $query->where('active', $value);
}
$notification_type = NotificationTypes::active(value_you_want)->get();

把value_you_want改成你想要的值

也可以用

$notification_type = NotificationTypes::where('id', 1)->orWhere('tenant_id', 1)->get();

相关内容

  • 没有找到相关文章