$post = $request->user()->posts()->create($request->all());
$imageData = json_decode($request['imageData']) ?: null;
$image = $this->imageHandler->make($request['image'], $imageData);;
$post->image()->save($image);
Log::debug($post->image->thumbnail);
当我这样做时,$post->image->thumbnail
命令(以及日志本身)中的Log
为空。我不明白为什么会发生这种情况 - 如果我提交帖子后续显示的视图并使用$post->image->thumbnail
就好了,如果我进入artisan tinker
我可以$post->image
精细。由于某种原因,在制作邮政后的控制器中,它说不存在。此外,当它调用Algolia助手来保存/索引帖子时,它也不包括image
。
编辑:我在修补程序中尝试过此操作并遇到问题:
$post = factory(App\User::class)->create()->posts()->save(factory(App\Post::class)->make());
返回新用户和帖子
$image = factory(App\Image::class)->create();
返回新图片
$post->image()->save($image);
返回false
$ image现在是:
App\Image {#761
filename: "placeholder2.png",
updated_at: "2015-12-09 01:31:31",
created_at: "2015-12-09 01:31:22",
id: 91,
post_id: 104,
post: null,
}
$post->image
为空。 $image->post
为空。但$ image正确地拥有post_id。
如果我关闭修补程序并重新打开并$image = App\Image::find(91)
,现在$image->post
会正确返回帖子。我不明白这里发生了什么。
答案 0 :(得分:2)
这行代码:
mydomain.com/experiments
就我所见,无论结果如何,都将$ imageData设置为“null”。如果这是完整代码,那么您的问题很可能源于$ imageData始终为null。请尝试改为:
$imageData = json_decode($request['imageData']) ?: null;
答案 1 :(得分:0)
问题是在将图像保存到帖子后,仍然没有加载关系。但是当它再次被查询时,这种关系将在下次加载。
因此,将$ image保存到$ post后,我必须添加所有内容$post->load('image');
然后才能访问$post->image
。