php - Laravel:如何大规模创建作用域?

标签 php laravel

为了在 Laravel 中创建一个范围,我们手动定义了一个公共(public)方法,该方法与我们在构建查询时要使用的名称相匹配:

/**
 * Scope of Microsoft organization.
 * 
 * @param Builder $query
 * @return Builder
 */
public function scopeMicrosoft($query) 
{
    return $query->where('slug', 'microsoft');
}

用法:

Organization::microsoft()->first();

现在假设我们有超过 50 个组织,并且希望自动为每个基于 slug 属性的模型设置一个范围。有一种方法可以大规模创建作用域吗?

最佳答案

来自 docs :

动态作用域

Sometimes you may wish to define a scope that accepts parameters. To get started, just add your additional parameters to your scope. Scope parameters should be defined after the $query parameter:

namespace App;

use Illuminate\Database\Eloquent\Model;

class SomeModel extends Model
{
    /**
     * Scope a query to only include users of a given type.
     *
     * @param \Illuminate\Database\Eloquent\Builder $query
     * @param mixed $type
     * @return \Illuminate\Database\Eloquent\Builder
     */
    public function scopeOrganization($query, $org)
    {
        return $query->where('slug', $org);
    }
}

现在,您可以在调用作用域时传递参数:

$users = App\SomeModel::organization('Microsoft')->get();

关于php - Laravel:如何大规模创建作用域?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48443604/

相关文章:

php - 奇怪的字符而不是撇号出现在 url 变量 (GET) 中

Laravel SQLite 字段的默认值

Laravel 4 在我的 Controller 中使用/获取路由名称

javascript - 位置 0 出现意外标记 b

javascript - 在 ExtJS 组件中显示富文本

php - 在没有 libxml2 的情况下安装 PHP 5

php - 从 file_get_contents 请求获取 IP

php - 如何在 Laravel 中配置并行测试数据库?

php - 来自现有 mySQL 数据库的 Laravel/PHP JSON 格式

laravel - composer - 安装新包而不更新其他包