首页 \ 问答 \ Laravel Eloquent ORM - 嵌套语句(Laravel Eloquent ORM - Nested with statements)

Laravel Eloquent ORM - 嵌套语句(Laravel Eloquent ORM - Nested with statements)

所以我正在为我正在创建的Web应用程序创建一个API,并且我正在尝试将其保留在Eloquent ORM中。 我有一个亲子关系:

用户 - >站点日志 - >站点

网站类代码:

class Site extends Model {
    public function log() {
        return $this->hasMany('App\SiteLog', 'site_id', 'id');
    }
}

SiteLog类代码:

class SiteLog extends Model
{       
    public function site()
    {
        return $this->belongsTo('App\Site', 'site_id', 'id');
    }

    public function user()
    {
        return $this->belongsTo('App\User', 'user_id', 'id');
    }
}

当我使用以下方法实例化SiteLog类时:

$sites = Site::with('log')->get();

当我使用jQuery发出GET请求时,我得到了所有站点,并且在其中我有一个对象数组,其中包含站点各个日志的所有数据。 这正是我想要的。 但是,我想更进一步,让用户与日志相关联。

有点像这将如何工作:

SiteLog::with('user')->get();

但是在一个声明中,好像它是一个大的连接查询。 但是,我不确定Eloquent ORM是否涵盖了类似的测试用例。

有没有人做过这样的事情? 我可以通过一些非常糟糕的实践或只是编写原始SQL查询来完成这项工作,但我只是想知道是否有更有说服力的方法来执行此操作。


So I'm creating an API for a web application I'm creating and I'm trying to keep it within the Eloquent ORM. There is a parent-child relationship that I have going on:

User -> Site Logs -> Sites

Site class code:

class Site extends Model {
    public function log() {
        return $this->hasMany('App\SiteLog', 'site_id', 'id');
    }
}

SiteLog class code:

class SiteLog extends Model
{       
    public function site()
    {
        return $this->belongsTo('App\Site', 'site_id', 'id');
    }

    public function user()
    {
        return $this->belongsTo('App\User', 'user_id', 'id');
    }
}

When I instantiate the SiteLog class using:

$sites = Site::with('log')->get();

When I make the GET request with jQuery, I get all of the sites and inside of them I have an array of objects with all of the data for the sites respective logs. Which is exactly what I wanted. However, I wanted to take it a step further and get the user that the log is associated with.

Sort of like how this would work:

SiteLog::with('user')->get();

But all in one statement as if it was one big join query. However, I'm not sure if the Eloquent ORM covers a test case like that.

Has anybody ever accomplished something like this? I can get this done with some pretty hacky practices or just writing a raw SQL query, but I am just wondering if there was a more eloquent way of doing this.


原文:https://stackoverflow.com/questions/37772322
更新时间:2022-07-20 06:07

最满意答案

我必须克服这个问题,而不是最优雅的解决方案,但我将Paperclip分叉并在我自己的git repo中保存补丁 - https://github.com/svetzal/paperclip

它是Paperclip的直接替代品,只需放入您的环境.rb

gem'twm_paperclip',:lib =>'paperclip'


I had to overcome this, not the most elegant solution but I forked Paperclip and hold the patch in my own git repo - https://github.com/svetzal/paperclip

It is a direct replacement for Paperclip, just put in your environment.rb

gem 'twm_paperclip', :lib => 'paperclip'

相关问答

更多

相关文章

更多

最新问答

更多
  • python的访问器方法有哪些
  • 使用Zend Framework 2中的JOIN sql检索数据(Retrieve data using JOIN sql in Zend Framework 2)
  • 透明度错误IE11(Transparency bug IE11)
  • linux的基本操作命令。。。
  • 响应navi重叠h1和nav上的h1链接不起作用(Responsive navi overlaps h1 and navi links on h1 isn't working)
  • 在C中读取文件:“r”和“a +”标志的不同行为(Reading a File in C: different behavior for “r” and “a+” flags)
  • NFC提供什么样的带宽?(What Kind of Bandwidth does NFC Provide?)
  • 元素上的盒子阴影行为(box-shadow behaviour on elements)
  • Laravel检查是否存在记录(Laravel Checking If a Record Exists)
  • 设置base64图像的大小javascript - angularjs(set size of a base64 image javascript - angularjs)
  • 想学Linux 运维 深圳有哪个培训机构好一点
  • 为什么有时不需要在lambda中捕获一个常量变量?(Why is a const variable sometimes not required to be captured in a lambda?)
  • 在Framework 3.5中使用服务器标签<%=%>设置Visible属性(Set Visible property with server tag <%= %> in Framework 3.5)
  • AdoNetAppender中的log4net连接类型无效(log4net connection type invalid in AdoNetAppender)
  • 错误:发送后无法设置标题。(Error: Can't set headers after they are sent. authentication system)
  • 等待EC2实例重启(Wait for an EC2 instance to reboot)
  • 如何在红宝石中使用正则表达式?(How to do this in regex in ruby?)
  • 使用鼠标在OpenGL GLUT中绘制多边形(Draw a polygon in OpenGL GLUT with mouse)
  • 江民杀毒软件的KSysnon.sys模块是什么东西?
  • 处理器在传递到add_xpath()或add_value()时调用了什么顺序?(What order are processors called when passed into add_xpath() or add_value()?)
  • sp_updatestats是否导致SQL Server 2005中无法访问表?(Does sp_updatestats cause tables to be inaccessible in SQL Server 2005?)
  • 如何创建一个可以与持续运行的服务交互的CLI,类似于MySQL的shell?(How to create a CLI that can interact with a continuously running service, similar to MySQL's shell?)
  • AESGCM解密失败的MAC(AESGCM decryption failing with MAC)
  • SQL查询,其中字段不包含$ x(SQL Query Where Field DOES NOT Contain $x)
  • PerSession与PerCall(PerSession vs. PerCall)
  • C#:有两个构造函数的对象:如何限制哪些属性设置在一起?(C#: Object having two constructors: how to limit which properties are set together?)
  • 平衡一个精灵(Balancing a sprite)
  • n2cms Asp.net在“文件”菜单上给出错误(文件管理器)(n2cms Asp.net give error on Files menu (File Manager))
  • Zurb Foundation 4 - 嵌套网格对齐问题(Zurb Foundation 4 - Nested grid alignment issues)
  • 湖北京山哪里有修平板计算机的