gpt4 book ai didi

php - Laravel 5. 使用 USING 运算符

转载 作者:可可西里 更新时间:2023-10-31 23:38:03 25 4
gpt4 key购买 nike

我找了很久,我不敢相信 Laravel 没有这个功能。

所以,我可以写:

select * from a join b where a.id = b.id

或者更漂亮:

select * from a join b using(id)

第一种情况对于 Laravel 来说很简单:

$query->leftJoin('b', 'a.id', '=', 'b.id')

但是第二种情况怎么写呢?我希望它应该简单而简短,例如:

$query->joinUsing('b', 'id')

但是没有这样的方法,我也找不到。

PS:答案可能很简单,只是“用”这个词很难找到,因为它无处不在。

更新

我将更深入地研究源代码,尝试创建作用域或传递一个函数来加入,但即使在这个函数内部我也无法使用这个 $query 做任何事情。示例:

public function scopeJoinUsing($query, $table, $field) {
sql($query->join(\DB::raw("USING(`{$field}`)")));
// return
// inner join `b` on USING(`id`) ``
// yes, with "on" and with empty quotes
sql($query->addSelect(\DB::raw("USING(`{$field}`)")));
// return
// inner join `b` USING(`id`)
// but in fields place, before "FROM", which is very logic :)
}

所以即使忘记 scope ,我也不能在 DB::raw() 中做到这一点,所以这是不可能的......我第一次看到 Laravel 中不可能的事情。

最佳答案

所以,答案是 - 这是不可能的。

Laravel 不支持这个功能,这真的很可悲。

我在 Laravel 源代码中修复了它,我的 PULL REQUEST 在这里 - https://github.com/laravel/framework/pull/12773

关于php - Laravel 5. 使用 USING 运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36076108/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com