在laravel查询构建器中选择具有2列相等值的行

问题描述 投票:5回答:2

我想编写一个查询,选择1个实体中2个属性具有相同值的行。

这将是在原始SQL中执行此操作的示例:

Select * from users u where u.username = u.lastname

laravel是否有任何方法可以将2列名称作为参数并返回匹配结果?

laravel
2个回答
27
投票

你需要的是一个DB::raw表达式:

DB::table('users')
    ->where('username', '=', DB::raw('lastname'))
    ->get();

DB::raw实际上唯一做的就是告诉查询解释器不要像任何其他字符串值那样对待'lastname',而只是在SQL中插入它。

http://laravel.com/docs/queries#raw-expressions


2
投票

在Laravel 5中,为了更清晰的代码,有now whereColumn

Users::whereColumn('username', 'lastname')->get();
© www.soinside.com 2019 - 2024. All rights reserved.