Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何使moloquent的embedsOne关系工作?

如何使moloquent的embedsOne关系工作?
EN

Stack Overflow用户
提问于 2018-08-24 23:24:15
回答 1查看 192关注 0票数 0

我尝试了文档中的示例。我有两节课:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
namespace App;

use Moloquent\Eloquent\Model as Eloquent;

class Author extends Eloquent
{
    protected $fillable = [ 'name' ];
}
class Book extends Eloquent
{
    public function author()
    {
        return $this->embedsOne(Author::class);
    }
}

在修补程序会话中,我创建了一个作者和一本书,并尝试保存链接:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>>> $author = new App\Author(['name'=>'John Doe']);
=> App\Author {#2284
     name: "John Doe",
   }
>>> $book = new App\Book();
=> App\Book {#2277}
>>> $book->author()->save($author);
=> App\Author {#2284
     name: "John Doe",
     updated_at: MongoDB\BSON\UTCDateTime {#2296
       +"milliseconds": "1534969446023",
     },
     created_at: MongoDB\BSON\UTCDateTime {#2296},
     _id: MongoDB\BSON\ObjectId {#2298
       +"oid": "5b7dc6662dab0d03621a1c82",
     },
   }
>>> $book->save();
=> true

然而,这本书中并没有存储作者。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>>> $book
=> App\Book {#2277
     updated_at: MongoDB\BSON\UTCDateTime {#2268
       +"milliseconds": "1534969455111",
     },
     created_at: MongoDB\BSON\UTCDateTime {#2268},
     _id: MongoDB\BSON\ObjectId {#2294
       +"oid": "5b7dc66f2dab0d03621a1c83",
     },
   }
>>> $book->author
=> null

是坏了,还是我做错了?当我使用create()方法时,我得到了一个干净的结果:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>>> $book->author()->create(['name'=>'Jane Doe']);
=> App\Author {#2302
     name: "Jane Doe",
     updated_at: MongoDB\BSON\UTCDateTime {#2308
       +"milliseconds": "1534970275755",
     },
     created_at: MongoDB\BSON\UTCDateTime {#2308},
     _id: MongoDB\BSON\ObjectId {#2317
       +"oid": "5b7dc9a32dab0d03621a1c84",
     },
   }
>>> $book
=> App\Book {#2277
     updated_at: MongoDB\BSON\UTCDateTime {#2268
       +"milliseconds": "1534969455111",
     },
     created_at: MongoDB\BSON\UTCDateTime {#2268},
     _id: MongoDB\BSON\ObjectId {#2294
       +"oid": "5b7dc66f2dab0d03621a1c83",
     },
     author: App\Author {#2310
       name: "Jane Doe",
       updated_at: MongoDB\BSON\UTCDateTime {#2308
         +"milliseconds": "1534970275755",
       },
       created_at: MongoDB\BSON\UTCDateTime {#2308},
       _id: MongoDB\BSON\ObjectId {#2309
         +"oid": "5b7dc9a32dab0d03621a1c84",
       },
     },
   }

尝试使用save()方法更改作者仍然不起作用:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>>> $book->author()->save(App\Author::first())
=> App\Author {#2352
     _id: MongoDB\BSON\ObjectId {#2342
       +"oid": "5b7dcdfd2dab0d03621a1c85",
     },
     name: "Your Name",
     updated_at: MongoDB\BSON\UTCDateTime {#2346
       +"milliseconds": "1534971389628",
     },
     created_at: MongoDB\BSON\UTCDateTime {#2347
       +"milliseconds": "1534971389628",
     },
   }
>>> $book
=> App\Book {#2277
     updated_at: MongoDB\BSON\UTCDateTime {#2292
       +"milliseconds": "1534970479148",
     },
     created_at: MongoDB\BSON\UTCDateTime {#2268
       +"milliseconds": "1534969455111",
     },
     _id: MongoDB\BSON\ObjectId {#2294
       +"oid": "5b7dc66f2dab0d03621a1c83",
     },
     author: App\Author {#2310
       name: "Jane Doe",
       updated_at: MongoDB\BSON\UTCDateTime {#2308
         +"milliseconds": "1534970275755",
       },
       created_at: MongoDB\BSON\UTCDateTime {#2308},
       _id: MongoDB\BSON\ObjectId {#2309
         +"oid": "5b7dc9a32dab0d03621a1c84",
       },
     },
   }

欢迎光临!

伯恩哈德

EN

回答 1

Stack Overflow用户

发布于 2018-08-25 02:05:25

我认为您的错误是在第一行之后:$author = new App\Author(['name'=>'John Doe']),您没有保存。是的,你创建了一个新的作者,但是你没有保存它,所以当调用$book->author()->save($author)时,会给出一个数据库中没有id的对象,这就是为什么它不会被保存的原因。

试着运行下面这样的代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$author = new App\Author(['name'=>'John Doe']);
$author->save();
$book = new App\Book();
$book->autor_id = $author->id;
$book->save();

现在应该可以正确地保存作者了!

同样,这也是可行的:$book->author()->create(['name'=>'Jane Doe']);,因为create方法在后台保存,传递数据库上的现有对象。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52012790

复制
相关文章
提示以只读方式打开文件
如果不希望内容审阅者意外修改你的文档,可在发送文档供审阅前将其设为只读。 另一种方法是限制格式和编辑。
MIKE笔记
2023/03/22
1.8K0
提示以只读方式打开文件
浏览器以只读方式打开PDF
版权声明:本文为博主原创文章,欢迎转载。 https://blog.csdn.net/chengyuqiang/article/details/88828480
程裕强
2019/07/01
2.4K0
以Blog.Core的方式来打开Abp.vNext
最近自己的框架已经基本的成型了,当然还有很多质疑的地方,比如这些人是这么说的,基本都是原文:
老张的哲学
2022/04/11
7100
以Blog.Core的方式来打开Abp.vNext
以编程方式创建Vue.js组件实例
最近参与了一个Vue.js项目,项目中需要能够以编程方式创建组件。通过编程,意思是使用JavaScript创建和插入组件,而无需在模板中编写任何内容。
前端知否
2020/03/23
7.9K3
【干货】学习编程的正确打开方式!
这个问题是老九君最近几年来最关注的点。老九君觉得网上提及的许多方法尽管都很不错,然而老九君却注意到,成功的童鞋,无论使用哪种方法,往往都会在以下三个方面,比其他人有着更好的表现: 1.聚焦习惯而不是目标; 2.独自学习非常痛苦; 3.项目实践; 聚焦习惯而不是目标 聚焦习惯而不是目标听起来似乎不合常理,但是请听老九君把话说完 – 这是一个有关平衡的问题。凡是和老九君共过事的人都知道,老九君有时就像傻子(快成傻子了)一样,在一天内,引用《蝙蝠侠:侠影之谜》中 Ra’s Al Ghul 的话多达 3-4 次。(
老九君
2018/03/01
7840
【干货】学习编程的正确打开方式!
Eclipse 项目以非gradle方式导入Android Studio
对于以前习惯了Eclipse ide的开发这来说,要把项目导入到studio是一件很不愿接受的事情,但是。。。毕竟人家官方都给出建议了,并且年后会逐渐被淘汰 如下图所示是一个典型的eclipse项目
xiangzhihong
2018/01/30
1.3K0
Eclipse 项目以非gradle方式导入Android Studio
android默认打开方式修改_setcontenttype方法
今天做项目遇到了下载更新APP后自动安装的功能,也就是说当下载之后打开该Apk文件。我们可以通过intent的setDataAndType方法实现,这里列举出更多的打开方式:
全栈程序员站长
2022/11/04
1.1K0
以编程方式执行Spark SQL查询的两种实现方式
摘 要 在自定义的程序中编写Spark SQL查询程序 1.通过反射推断Schema package com.itunic.sql import org.apache.spark.sql.SQLContext import org.apache.spark.{SparkConf, SparkContext} /**   * Created by itunic.com on 2017/1/2.   * Spark SQL   * 通过反射推断Schema   * by me:   * 我本沉默是关注互联
天策
2018/06/22
2K0
[译] 论 Android 中 Span 的正确打开方式
原文地址:Underspanding spans 原文作者:Florina Muntenescu 译文出自:掘金翻译计划 本文永久链接:github.com/xitu/gold-m… 译者:tanglie1993 校对者:dandyxu, ALVINYEH Span 够为文字和段落设置样式,它是通过让用户使用 TextPaint 和 Canvas 等组件来实现这些功能的。在上一篇文章中,我们讨论了如何使用 Span、Span 是什么、Span 本身自带的功能,以及如何实现并测试自己的 span。 用 S
Android 开发者
2018/06/06
1.6K0
:Android网络编程--XML之解析方式:SAX
任何放置在资源(res)目录下的内容可以通过应用程序的R类访问,这是被Android编译过的,而任何放置在资产(assets)目录下的内容会保持它的原始文件格式,为了读取它们,必须使用AssetManager来以字节流的方式读取文件,所以文件和数据保存在资源中更方便访问。
yuanyuan
2019/09/10
6310
以只读的方式打开二进制文件,并输出结果代码分享
o=cv2.imread("./img/hand1.png")
好派笔记
2022/06/07
9850
打开orika的正确方式
缘起 架构分层 开发分布式的项目时,DO持久化对象和DTO传输对象的转换是不可避免的。集中式项目中,DO-DAO-SERVICE-WEB的分层再寻常不过,但分布式架构(或微服务架构)需要拆分模块时,不
kirito-moe
2018/04/27
3.8K0
打开orika的正确方式
open函数打开文件方式
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/141085.html原文链接:https://javaforall.cn
全栈程序员站长
2022/08/24
5430
以 React 的方式思考
React 很棒的一点是创建应用中引导你思考的过程。这篇文档中,我们将通过运用React创建一个产品搜索列表,来引导你熟悉这个思考过程。
fanzhh
2019/08/20
3.5K0
以 React 的方式思考
android自定义view(自定义数字键盘)
至此,我们写的差不多了,然后就是要提供一个接口,对外开放,方便用的时候调用,获取到数字或者其他信息:
用户2802329
2018/08/07
1.4K0
android自定义view(自定义数字键盘)
现在,以编程方式在 Electron 中上传文件,是非常简单的!
本文主要探讨了在 Electron 应用中如何实现上传文件到服务器的功能,同时通过本地代理服务器来获取完整的cookie。首先介绍了在 Electron 应用中如何通过 XHR 上传文件到服务器,然后介绍了如何通过 LocalStorage 将文件保存在本地。最后,本文介绍了一种使用 Electron 创建本地代理服务器,从而获取完整的cookie的方法。
ios122
2017/12/27
5.2K0
现在,以编程方式在 Electron 中上传文件,是非常简单的!
点击加载更多

相似问题

在Netbeans下运行测试时出现问题

14

运行MERN测试时出现问题

24

在Cucumber升级后运行测试时出现问题

10

在模型上运行rspec测试时出现问题

13

无法在OSX - works的ubuntu上运行无头黄瓜测试?

20
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文