gpt4 book ai didi

php - 如何在 Laravel Eloquent 关系中使用查询生成器或原始 SQL

转载 作者:可可西里 更新时间:2023-11-01 00:43:17 26 4
gpt4 key购买 nike

我正在使用 Laravel 的 Eloquent ORM,但想定义一个复杂的关系,并且想知道在定义关系时是否可以使用查询构建器或原始 SQL。

这是模式:

表:对象;模型:对象

表:用户;模型:用户

表:objects_users;关系:ManyToMany - 一个对象可以由多个用户拥有,一个用户可以拥有多个对象。

使用传统关系可以很好地处理普通记录,即单独输入数据透视表的记录。但是,我还想根据其他条件返回其他结果;即,如果所有对象都设置了调试器标志,则允许所有对象属于一个用户。本质上,我想模仿这个查询:

SELECT objects.*
FROM objects
LEFT JOIN objects_users ON objects.id = objects_users.object_id
INNER JOIN users ON
objects_users.user_id = users.id
OR users.debugger = 1

或者,如果无法做到这一点,是否可以从查询构建器查询中返回 Eloquent 模型?

最佳答案

你可以这样做:

    $objects = DB::select('select objects.* from objects 
LEFT JOIN objects_users ON objects.id = objects_users.object_id
INNER JOIN users ON
objects_users.user_id = users.id
OR users.debugger = 1');`

之后,您可以像这样将原始结果对象“转换”为您指定的模型:

$objArray = array();
$objArray = YourObjectModel::hydrate($objects);

希望对您有所帮助!祝你圣诞快乐 ;)

关于php - 如何在 Laravel Eloquent 关系中使用查询生成器或原始 SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27603381/

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