小编bak*_*ike的帖子

Laravel 5 Eloquent scope连接并选择特定列

我有一个Eloquent模型,在模型中我使用范围查询来进行连接.这一切都工作正常,但我试图弄清楚在范围查询中如何只从连接表中选择某些列.

这是我的控制器中的方法.

$accounts = Account::creator()->get();
Run Code Online (Sandbox Code Playgroud)

这是模型中的范围查询

public function scopeCreator($query) {
        $query->leftJoin('users','users.id','=','accounts.creator_id');
}
Run Code Online (Sandbox Code Playgroud)

这有效,但它返回帐户和用户的所有列,但我只想要帐户中的所有列,而只需要用户的2列.

我试过这个......

public function scopeCreator($query) {
        $query->leftJoin('users','users.id','=','accounts.creator_id')->select(array('id','user_name'));
}
Run Code Online (Sandbox Code Playgroud)

但是,这仅返回用户的那两个字段,并忽略帐户中的列.我知道如何用2种不同的模型做到这一点,但这意味着我必须创建一个无用的模型.这个范围查询功能非常棒,如果我能搞清楚这一部分的话.

scope laravel eloquent

10
推荐指数
1
解决办法
2万
查看次数

使用比较运算符比较postgres中的字符串?

在许多编程语言中,您可以使用>,> =,<etc等运算符来比较字符串,并且语言将基于字母表中字母位置的比较.

例如在PHP中

if ('a' < 'b') {
    echo 'Yes';
} else {
    echo 'No';
}
> Yes
Run Code Online (Sandbox Code Playgroud)

但是在postgres或mysql中

SELECT
CASE WHEN 'a' < 'b' THEN 'yes' END
FROM table
Output: null
Run Code Online (Sandbox Code Playgroud)

我有一个包含字符串的表,我需要通过SQL相互比较.

例如:6.2(5a)6.2(5b) - 这将大于6.2(5a)或6.2(15) - 这将大于6.2(5a)

我想过使用正则表达式给一个字母分配一个数字但是当没有字母时这会打破比较.

你会如何在SQL中纯粹地解决这个问题?

postgresql natural-sort

6
推荐指数
1
解决办法
2万
查看次数

标签 统计

eloquent ×1

laravel ×1

natural-sort ×1

postgresql ×1

scope ×1