Laravel在雄辩的ORM中使用WHERE

时间:2014-11-18 13:01:54

标签: php laravel orm eloquent

我遇到了这个

$user = User::whereConfirmationCode($confirmation_code)->first();

在Laravels雄辩的ORM中,您可以在上面的where语句中附加表格行名称吗?

在我看到这之前我会写

例如:$user = User::where('confirmation_code', '=', $confirmation_code)->first();

由于

2 个答案:

答案 0 :(得分:10)

'是的,你可以在哪里建立动态。 它在简单的where语句中进行解析。 你也可以像这样构建魔术查询:

$user = User::whereConfirmationCodeAndIdOrRole(12345, 5, 'admin')->first();

它将转变为:

$user = User::where('confirmation_code', '=', 123456, 'and')->where('id', '=', 5, 'or')->where('role', '=', 'admin')->first();

答案 1 :(得分:1)

我可能错了。我没有意识到魔术查询构建器设置。

这是custom query scope

IE:具有查询范围的帖子模型,用于获取所有具有' status' =已发表。

class Post extends Eloquent {
    /**
     * Get all posts with 'status' published
     *
     * @param Illuminate\Database\Query\Builder $query
     * @return Builder $query
     */
     public function scopePublished(Builder $query)
     {
         return $query->where('status', 'published');
     }
}

然后使用它:

 Post::published()->first();

注意参数可以通过在查询构建器之后将它们作为参数传递给查询范围来传递给自定义范围。

 public function scopeStatus(Builder $query, $status)
 {
     return $query->where('status', $status);
 }