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
最满意答案
我必须克服这个问题,而不是最优雅的解决方案,但我将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'
相关问答
更多-
试试这个:这对我有用
ActionMailer after_filter破坏content_type(ActionMailer after_filter breaking content_type)[2023-01-25]
仍然不完全确定这里发生了什么,但似乎在after_filter中使用message对象而不是mail修复了这个: def ensure_valid if User.where(email: message.to, invalid_email: true).any? message.perform_deliveries = false end true end 这会正确设置perform_deliveries而不会影响content_type(将其保留为multipart/alterna ...Paperclip的content_type根据应用程序无效,但不是(Paperclip's content_type is invalid according to app, but isn't)[2024-02-27]
您似乎正在尝试使用一些Paperclip validation ,您可以在此处查看: Paperclip - 验证文件类型但不存在 根据那个答案,你可以使用这个: validates_attachment_content_type :sound, :content_type => ['audio/mp3', 'application/x-mp3'], :if => :sound_attached? 另一种方法是使用lambda来检查您是否正在处理特定的内容类型。 以下是我们的一个实时应用中的示例: ...我必须克服这个问题,而不是最优雅的解决方案,但我将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 pat ...Fine Uploader在现代浏览器中使用ajax请求( XMLHttpRequest )在初始文件列表端点返回的URL处加载缩略图。 它这样做可以缩放和正确定位图像预览。 您需要在S3存储桶上使用CORS规则,允许通过GET请求进行JS访问。 它看起来像这样:... 这是我第一个问题的答案。 经过谷歌搜索这么多小时后,我发现了这一点。 将Media和JW Player文件上载到Amazon S3存储桶: 步骤1:从JW Player网站上的功能页面下载播放器。 然后提取.zip文件的内容。 第2步:登录到管理控制台https://console.aws.amazon.com/s3/ 步骤3:创建公共类型存储桶步骤4:选择存储桶并单击上传步骤5:将以下文件上传到存储桶中 jwplayer.flash.swf jwplayer.html5.js jwplayer.js和 您 ...这是我做的: 假设在my-bucket.s3.amazonaws.com/path/to/file.png上的S3上有一个文件 它将与之相关联。 我将缩略图存储在my-bucket.s3.amazonaws.com/thumbs/path/to/file.png/"78skfghsfsfkgjh"small.png之类的内容中 我可以将缩略图存储在图像下,因为S3是一个多分叉文件系统,但我喜欢将实际和生成的数据分开,以便轻松转储/重建。 然后,如果主文件发生变化,我可以判断etag会发生变化,然后我会做一个 ...好像它在这里返回正确的内容类型(使用curl -i): HTTP/1.1 200 OK Server: nginx Date: Mon, 04 Feb 2013 00:10:05 GMT Content-Type: application/rss+xml; charset=utf-8 Content-Length: 121890 Connection: keep-alive X-Ua-Compatible: IE=Edge,chrome=1 Etag: "74ebbfe3182fef13d8 ... 如果您只是更新元数据(而不是正文/内容本身),您可能希望使用复制而不是保存。 这可能是不明显的,但是这样可以保持S3端的操作,使其更快。 副本的签名如下: copy(target_directory_key, target_file_key, options = {}) 所以我认为我提出的解决方案应该(或多或少)看起来像这样: directory.files.each do |f| content_type = case f.key.split(".").last when "jpg" "i ...Paperclip于February 21, 2014年February 21, 2014发布的最新版本4.1.1解决了此问题。 我的以下两个示例现在都正确传递。 it "Image is valid" do image = File.new("#{Rails.root}/spec/support/right.png") expect(FactoryGirl.build(:pin, image: image)).to be_valid end it "Image is invalid" do ...相关文章
更多- LARAVEL学习--安装
- JPA ORM框架介绍
- 【第八章】 对ORM的支持 之 8.3 集成iBATIS ——跟我学spring3
- 对象关系映射(ORM)-Oceanus编码调用
- 【第八章】 对ORM的支持 之 8.1 概述 ——跟我学spring3
- 【第八章】 对ORM的支持 之 8.4 集成JPA ——跟我学spring3
- 【第八章】 对ORM的支持 之 8.2 集成Hibernate3 ——跟我学spring3
- spring 嵌套事务 的 加锁 问题
- Storm Tutorial 中文版 — Storm Tutorial 中文版
- JEE技术相关
最新问答
更多- 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)
- 湖北京山哪里有修平板计算机的