php – Laravel 4 – 在构建集合时将where子句附加到关系的雄辩方式

php – Laravel 4 – 在构建集合时将where子句附加到关系的雄辩方式,第1张

概述这可能是一个骗局,但我已经拖网一段时间寻找一个正确的答案,还没有找到一个. 因此,基本上我想要做的就是连接两个表,并根据连接表中的字段将where条件附加到整个集合. 所以我要说我有两张桌子: users: -id -name -email -password -etcuser_addresses: -address_line1 -address_li 这可能是一个骗局,但我已经拖网一段时间寻找一个正确的答案,还没有找到一个.

因此,基本上我想要做的就是连接两个表,并根据连接表中的字段将where条件附加到整个集合.

所以我要说我有两张桌子:

users:   -ID   -name   -email   -password   -etcuser_addresses:   -address_line1   -address_line2   -town   -city   -etc

为了论证(实现这可能不是最好的例子) – 假设用户可以有多个地址条目.现在,laravel / eloquent为我们提供了一种以范围形式包装条件的好方法,因此我们将使用其中一个来定义过滤器.

所以,如果我想让所有用户在smallville获得一个地址,我可以创建一个范围和关系,如下所示:

Users.PHP(型号)

class users extends Eloquent{    public function addresses(){        return $this->belongsToMany('Address');    }    public function scopeSmallvilleResIDents($query){        return $query->join('user_addresses',function($join) {                    $join->on('user.ID','=','user_addresses.user_ID');                })->where('user_addresses.town','Smallville');    }}

这可行,但它有点难看,它会弄乱我的雄辩对象,因为我不再拥有包含用户地址的良好动态属性,所有内容都只是塞进用户对象中.

我已经尝试了其他各种方法来实现这一点,例如在关系上使用闭包看起来很有希望:

//这只是在附加关系时进行过滤,因此会显示所有用户,但只会拉出匹配的地址

User::with(array('Addresses' => function($query){                $query->where('town','Smallville');            }));

//这根本不起作用

User::with('Addresses')->where('user_addresses.town','Smallville');

那么是否存在一种“雄辩”的方式,以过滤主要集合的方式将where子句应用于关系并保持我的雄辩对象?或者我是否喜欢这么多其他人被Eloquent的优雅语法所破坏到我要求太多的地步?

注意:我知道您通常可以通过在另一个方向定义关系来解决这个问题(例如,首先访问地址表),但这并不总是理想的,而不是我要求的.

在此先感谢您的帮助.

解决方法 此时,您无法根据相关模型中的约束过滤主模型.
这意味着,您只能在一次滑动中获得拥有user_address.town =’Smallwille’的用户.

我个人希望这会很快实现,因为我可以看到很多人要求它(包括我在这里).

目前的解决方法很混乱,但它的工作原理:

$products = array();$categorIEs  = category::where('type','fruit')->get();foreach($categorIEs as $category){ $products = array_merge($products,$category->products);}return $products;
总结

以上是内存溢出为你收集整理的php – Laravel 4 – 在构建集合时将where子句附加到关系的雄辩方式全部内容,希望文章能够帮你解决php – Laravel 4 – 在构建集合时将where子句附加到关系的雄辩方式所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1254105.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存