我试图使用morphname键为可注释模型(通过使用多态关系创建)创建注释。
例如;我想创建一个注释,给出变形名称(blog)和foreign_key(1)。但是变形名称可能会改变。因此,我们不知道请求中可以包含哪个键。我不想为每种资源创建操作。
AppServiceProvider:
String agentID = parameterJson.getObject("agentid").toString();
控制器->操作:
Relation::morphMap([
'blog' => \App\Models\Blog\BlogPost::class,
'product' => \App\Models\Commerce\Product::class,
]);
可评论的关系:
$this->validate($request, [
'commentable_model' => 'required|string',
'commentable_id' => 'required|integer|min:1',
'comment' => 'required|string'
]);
// i am trying to load data using morph name and foreign key here; but it's not working.
$model = $request->commentable_model::findOrFail($request->commentable_id);
$comment = new Comment;
$comment->comment = $request->comment;
$comment->commentable()->associate($model);
$comment->user()->associate(auth('api')->user());
$comment->save();
数据:
commentable_model =>'博客', commentable_id => 1
我将通过api端点发送这些数据。因此,我只想使用morhpnames,而不使用完整的类名。
我无法正常工作。
有什么想法吗?
答案 0 :(得分:0)
我找到了解决方案,实际上它一直在我的眼前……
我们正在使用Relation类进行映射。
我检查了是否可以使用任何方法或变量访问该关系,答案是肯定的。
简短的答案是;
Relation::$morphMap
将所有映射返回为数组。
我对这个问题的解决方案是;
$model = Relation::$morphMap[$request->commentable_model]::findOrFail($request->commentable_id);
使用我们给定的词法名称(博客)访问该数组值。