Laravel 4:如何向 DB::table 添加范围?

2024-01-02

使用 Eloquent 模型添加范围很容易:

public function scopeMyScope($query)
{
   // Do stuff to that $query
}

但如何添加范围DB::table?

我使用此查询来获取页面浏览量:

$views = DB::table('page_views')
    ->where('id', $this->id)
    ->where('agent', 'NOT LIKE', '%bot%')
    ->count(DB::raw('distinct session, DATE(created_at)'));

我还通过其他查询显示最受欢迎的页面等,但具有相同的where状况。所以我只想定义我的where条件一次并在所有其他页面视图中重复使用它们DB::table查询。


DB::table不支持范围。您可以做的只是编写一个小函数,该函数对查询执行一些操作并返回它。语法不是那么好,但它可以工作:

function applyScope($query){
    $query->whereNotNull('deleted_at');
    $query->where('foo', 'bar');
    return $query;
}

进而:

$query = DB::table('page_views')
    ->where('id', $this->id)
    ->where('agent', 'NOT LIKE', '%bot%');
$query = applyScope($query);
$views = $query->count(DB::raw('distinct session, DATE(created_at)'));

或者更短的语法:

$views = applyScope( DB::table('page_views')
                       ->where('id', $this->id)
                       ->where('agent', 'NOT LIKE', '%bot%')
         )->count(DB::raw('distinct session, DATE(created_at)'));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Laravel 4:如何向 DB::table 添加范围? 的相关文章

随机推荐

  • 使用 vscode 扩展 api 函数的单元测试函数

    我正在尝试找出一种对函数进行单元测试的方法 其中包括 vscode 扩展 api 中包含的辅助函数 例如显示快速选择 用法示例 vscode window showQuickPick one two 我一直在尝试存根和嘲笑那些 但虽然我不确
  • 使用 Automapper 将字符串映射到 List,反之亦然

    基本上我有这个类与我的数据库代表 1 1 public class User public int UserID get set public string Username get set public string Role get s
  • 跟踪 svg 路径(以离散步骤获取 x,y 坐标)[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 如何在 SVG 路径上找到多个 均匀分布的 点 我发现它在这里完成code pen https cod
  • CORS 请求已预检,但似乎不应该

    以下跨源 POST 请求 内容类型为 multipart form data 并且仅预检简单标头 根据 W3C 规范 除非我读错了 否则不应该进行预检 我已经确认 Chrome 27 和 Firefox 10 8 3 中会发生这种情况 我没
  • C++ 命名空间,与 Java 包的比较

    我最近完成了一堆 Java 编码 并且已经习惯了非常具体的包命名系统 例如深度嵌套 com company project db 这在 Java AS3 Flex 和 C 中运行良好 我也看到过 C 中应用了相同的范例 但我也听说将 C 命
  • 有没有使用 firebug 的教程/指南?

    我刚刚获得了 Firefox 的附加组件 到目前为止它非常棒 但我所做的只是在页面上移动光标来获取 css html 我知道还有更多的 Firebug 应用程序 既然 Firebug 如此受欢迎 是否有一个初学者指南 或者只是需要练习的东西
  • 如何查找存储过程中使用的表列表,而无需“With(nolock)”字样[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我有很大的表数据 每个表都需要以语句 nolock 结尾 请帮我在所有存储过程中查找 Example 如果存储过程使用两个表 a 和 b 并
  • MySQL Linq 使用 .Contains(变量)

    设置信息 VS2013 C EF6 MySQL数据库 Net 连接器 6 9 5 我正在尝试创建一种方法 该方法使用部分名称作为搜索条件返回帐户记录的集合 如果我使用 IQueryable Contains 扩展方法对字符串值进行硬编码 它
  • 是否可以在 React Native 中使用 React hooks?

    在 React 文档中 它说变量和监听器钩子必须在组件内声明 但当我尝试这样做时 React Native 会抱怨 有没有办法在React Native中使用Hooks 或者有谁知道它们将来是否会实施 不过有点像useEffect不管用 当
  • 使用.NET检查AWS中是否存在SQS

    我能够使用 AWSSDK SQS 包中的 AmazonSQSClient 客户端成功将消息发送到 NET 中的队列 如何检查特定队列是否存在以及是否未创建 您需要使用以下命令运行检查AmazonSQSClient GetQueueUrl s
  • bash 脚本中的 if 条件取反

    我一直试图否定以下命令 wget q tries 10 timeout 20 spider http google com if eq 0 then echo Sorry you are Offline exit 1 如果我连接到互联网 则
  • 如何使用 Spring Boot 和 Spring Security 保护 REST API 的安全?

    我知道保护 REST API 是一个被广泛评论的话题 但我无法创建一个满足我的标准的小型原型 并且我需要确认这些标准是现实的 如何保护资源以及如何使用 Spring 安全性有很多选择 我需要澄清我的需求是否现实 我的要求 基于令牌的身份验证
  • 如何获取写入的记录数(使用DataFrameWriter的保存操作)?

    使用spark保存记录时有没有办法获取写入的记录数 虽然我知道它目前不在规范中 但我希望能够执行以下操作 val count df write csv path 或者 能够对步骤的结果进行内联计数 最好不使用标准累加器 将 几乎 同样有效
  • iOS 10 中 UICollectionView 预取数据源?

    目的是什么prefetchDataSourcesiOS 10 中引入 我刚刚在 XCode 8 GM Seed 中运行一个项目并开始出现错误 MessagesExtension 17902 1238603 Assertion failure
  • 在Python中打印字符串会在字符串之前打印“u”吗?

    打印列表中元素之前的 u 我没有在代码中输入 u hobbies prompt user three times for hobbies for i in range 3 hobby raw input Enter a hobby hobb
  • 使用 IDE 运行 Spring-boot 的 main

    我有一个 spring boot 应用程序需要 可作为 Servlet 容器中的战争进行部署 可通过 mvn spring boot run 运行 我还希望能够通过右键单击 IDE Eclipse 或 IntelliJ IDEA Commu
  • NSFilePresenter 方法永远不会被调用

    我正在尝试编写一个简单的 玩具 程序 它使用 NSFilePresenter 和 NSFileCoordinator 方法来监视文件的更改 该程序由一个加载 硬编码 文本文件的文本视图和一个用于保存文件更改的按钮组成 我的想法是 我有两个实
  • 在 Windows Mobile 应用程序中播放 YouTube 视频

    我正在开发一个用于 Windows Mobile 6 或可能 5 的应用程序 用于播放 YouTube 视频 嗯 它should播放 YouTube 视频 并控制 查询播放器的状态变化 当前帧 时间等 在网上搜索了相当长一段时间 以及一些尝
  • Hibernate 验证器中的自定义消息密钥不适用于 message.property

    我正在研究 Spring Boot 我使用 Hibernate Validator 来验证我的 bean 我添加了一个自定义键 NotEmpty注释 并在 message properties 中添加键 值对 但它没有从 message p
  • Laravel 4:如何向 DB::table 添加范围?

    使用 Eloquent 模型添加范围很容易 public function scopeMyScope query Do stuff to that query 但如何添加范围DB table 我使用此查询来获取页面浏览量 views DB