Php Laravel Scout-关系不会在创建时添加
PHP:7.3 拉威尔:5.8 拉雷维尔童子军:7.1 Algolia Scout扩展:1.6Php Laravel Scout-关系不会在创建时添加,php,laravel,
elasticsearch,algolia,laravel-scout,Php,Laravel,
elasticsearch,Algolia,Laravel Scout,PHP:7.3 拉威尔:5.8 拉雷维尔童子军:7.1 Algolia Scout扩展:1.6 class Page extends Model { use Searchable; public function toSearchableArray() { $array = [ 'title' => optional($this->content)->title, 'extra' => $this->extra,
class Page extends Model
{
use Searchable;
public function toSearchableArray()
{
$array = [
'title' => optional($this->content)->title,
'extra' => $this->extra,
];
return $array;
}
public function content()
{
return $this->morphOne(Content::class, 'contentable');
}
protected $fillable = ['extra'];
protected $with = ['content'];
}
class Content extends Model
{
public function contentable()
{
return $this->morphTo();
}
protected $fillable = ['title'];
protected $touches = ['contentable'];
}
class PageController extends Controller
{
public function store(Request $request)
{
$page = Page::create($request->all());
$page->content()->create($request->all());
return $page;
}
public function update(Request $request, $id)
{
$page = $this->findOrFail($id);
$page->update($request->all());
$page->content->update($request->all());
$page = $page->fresh();
return $page;
}
}
现有实例的Scout导入工作正常,所有实例都处于同步状态
更新时,同步工作正常,$touchs完成任务
$array = [
'title' => 'Title',
'extra' => 'Extra field',
];
存储上的内容关系为空,创建时不会更新。
它似乎不侦听内容已保存的事件。(关系被添加到$touch数组中)
它会起作用的我不明白你的问题是什么?问题在于存储方法。它不附加内容关系数据。更新很好,正如我所说,更新很好。问题在于存储方法。
// use Content; // after namespace
class PageController extends Controller
{
public function store(Request $request)
{
$page = Page::with('content')->create($request->all());
return $page;
}
try this step
public function update(Request $request, $id)
{
$page = Page::with('Content')->findOrFail($id);
$page->update($request->all());
$page->content->update($request->all());
$page = $page->fresh();
return $page;
}
// use Content; // after namespace
class PageController extends Controller
{
public function store(Request $request)
{
$page = Page::with('content')->create($request->all());
return $page;
}
try this step