我想通过以下方式修改关系的结果集
我有这个数组
array:11 [▼
"id" => 1
"user_id" => 1
"name" => "Test Case"
"created_at" => "2017-08-25 17:12:26"
"updated_at" => "2017-08-29 11:59:46"
"hashid" => "5LOkAdWNDqgVomK"
"user" => array:8 [▶]
"order" => array:8 [▶]
"classification" => array:2 [▼
0 => array:9 [▼
"id" => 1
"case_id" => 1
"method" => "facial_map_manual"
"strong" => 2.0
"dynamic" => 30.0
"delicate" => 50.0
"calm" => 18.0
"created_at" => "2017-08-31 11:00:00"
"updated_at" => "2017-08-31 11:00:00"
]
1 => array:9 [▼
"id" => 2
"case_id" => 1
"method" => "interview"
"strong" => 20.0
"dynamic" => 25.0
"delicate" => 30.0
"calm" => 25.0
"created_at" => "2017-08-31 11:00:00"
"updated_at" => "2017-08-31 11:00:00"
]
]
"classification_data" => array:3 [▼
0 => array:6 [▼
"id" => 1
"case_id" => 1
"type" => "facial_points"
"data" => null
"created_at" => "2017-08-31 11:00:00"
"updated_at" => "2017-08-31 11:00:00"
]
1 => array:6 [▼
"id" => 2
"case_id" => 1
"type" => "interview"
"data" => array:4 [▶]
"created_at" => "2017-08-31 12:00:00"
"updated_at" => "2017-08-31 11:00:00"
]
2 => array:6 [▶]
]
"teeth_configuration" => array:6 [▶]
]
I want to map classification and classification_data by column key ( type OR method ) which are loaded relationships. This is the query:
$case = RCase::with(['user','order','classification','classificationData','teethConfiguration'])->where('id',$id)
->first();
这是我目前尝试过的
$case->classificationData = $case->classificationData->keyBy('type')->toArray();
使用第一种方法,它们按类型排序,但旧的 classification_data 会保留在那里,即使尝试
unlink($case->classification_data)这不是什么大问题...我也可以使用分类来做到这一点,但数据保持不变。
有什么方法可以直接在加载的关系模型中执行 keyBy() 吗?提前致谢
PHP Version: 7.1 Laravel Version: 5.4.38 OS: Ubuntu 16.04 LTS
最佳答案
您可以用这段代码替换关系:
$case->setRelation("classification_data",$case->classificationData->keyBy('type'));
要替换关系,您必须提供相同的关系名称,否则 laravel 将创建另一个关系。
当你这样做时:
$case->classificationData = something
您实际上是在向模型对象添加一个新属性。
关于php - Laravel Eloquent 关系 keyBy(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45987487/
我的问题的一个例子是体育游戏。一场体育比赛有两支球队,一支主队和一支客队。我的事件记录模型如下:classTeam"Team"has_one:away_team,:class_name=>"Team"end我希望能够通过游戏访问一个团队,例如:Game.find(1).home_team但我收到一个单元化常量错误:Game::team。谁能告诉我我做错了什么?谢谢, 最佳答案 如果Gamehas_one:team那么Rails假设您的teams表有一个game_id列。不过,您想要的是games表有一个team_id列,在这种情况下
📢博客主页:https://blog.csdn.net/weixin_43197380📢欢迎点赞👍收藏⭐留言📝如有错误敬请指正!📢本文由Loewen丶原创,首发于CSDN,转载注明出处🙉📢现在的付出,都会是一种沉淀,只为让你成为更好的人✨文章预览:一.分辨率(Resolution)1、工业相机的分辨率是如何定义的?2、工业相机的分辨率是如何选择的?二.精度(Accuracy)1、像素精度(PixelAccuracy)2、定位精度和重复定位精度(RepeatPrecision)三.公差(Tolerance)四.课后作业(Post-ClassExercises)视觉行业的初学者,甚至是做了1~2年
我想合并多个事件记录关系例如,apple_companies=Company.where("namelike?","%apple%")banana_companies=Company.where("namelike?","%banana%")我想结合这两个关系。不是合并,合并是apple_companies.merge(banana_companies)=>Company.where("namelike?andnamelike?","%apple%","%banana%")我要Company.where("名字像?还是名字像?","%apple%","%banana%")之后,我会写代
我有一个简单的问题,与关联有关。我有一个书的模型,它有_onereservation。预订属于_书本。我想在预订Controller的创建方法中确保在预订时没有预订一本书。换句话说,我需要检查该书是否存在任何其他预订。我该怎么做?编辑:Aaa我做到了,感谢大家的提示,学到了一些新东西。当我尝试提供的解决方案时,出现no_method错误或nil_class等。这让我开始思考,我尝试处理的对象根本不存在。Krule给了我使用book.find的想法,所以我尝试使用它。最终我得到了它的工作:book=Book.find_by_id(reservation_params[:book_id])
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭9年前。我来自C、php和bash背景,很容易学习,因为它们都有相同的C结构,我可以将其与我已经知道的联系起来。然后2年前我学了Python并且学得很好,Python对我来说比Ruby更容易学。然后从去年开始,我一直在尝试学习Ruby,然后是Rails,我承认,直到现在我还是学不会,讽刺的是那些打着简单易学的烙印,但是对于我这样一个老练的程序员来说,我只是无法将它
我有一组名为Tasks和Posts的资源,它们之间存在has_and_belongs_to_many(HABTM)关系。还有一个连接它们的值的连接表。create_table'posts_tasks',:id=>falsedo|t|t.column:post_id,:integert.column:task_id,:integerend所以我的问题是如何检查特定任务的ID是否存在于从@post.tasks创建的数组中?irb(main):011:0>@post=Post.find(1)=>#@post.tasks=>[#,#]所以我的问题是,@post.tasks中是否存在"@task
根据我目前的理解,如果我必须描述Rails应用程序的各个组件如何协同工作以响应请求,我会说以下内容:1)路由确定哪些请求URL映射到哪些Controller方法。2)Controller方法从模型中获取信息并将该信息(以全局变量的形式)传递给相应的View模板。3)View模板使用存储在全局变量中的数据来构造最终响应。在上面的解释中,几个组件之间的关系是明确的,不可否认的;即:1)路由和Controller方法2)Controller方法和View模板其实上面的关系是一对一的。但是,模型类与其相邻组件类型(即Controller)的关系并不明确。是的,Controller从模型中检索信
我在目录“/home/enterprise/pkg”中有一个本地gem(enterprise-0.0.1.gem)。它依赖于active_directorygem(v1.5.5),这是在它的enterprise.gemspec文件中指定的,如下所示:-gem.add_dependency("active_directory")在我的应用程序的Gemfile中,我添加了以下行:-gem'enterprise','0.0.1',path=>'/home/enterprise/pkg'当我做的时候bundleinstall在我的应用程序的源目录中,只安装了企业gem。因此,我遇到了引用act
我正在构建这个图书馆应用程序,它有3个类。国家、图书馆和书籍。国家有许多图书馆,图书馆属于一个国家。图书馆有很多书,书是嵌入图书馆的。但是,当我执行此auto_pick_job时,我们到达top_free_book并调用library.state。由于某种原因,library.state为nil。我希望恢复状态但没有骰子。我调用和创建库的方式如下。所以图书馆将永远属于一个现有的国家。state=Stats.find(x)library=state.libaries.new(info)library.save_optimistic!我也很感激使用Struct的关系帮助。classStat
我有一个看起来像这样的类:classFoo在测试#nasty_bars_present?我想编写一个rspec测试来对bars关联进行stub,但允许where自然执行。像这样的东西:describe"#nasty_bars_present?"docontext"withnastybars"dobefore{foo.stub(:bars).and_return([mock(Bar,bar_type:"Nasty")])}it"shouldreturntrue"doexpect(foo.nasty_bars_present?).tobe_trueendendend上面的测试给出了一个关于