Php 如何获得型号';你的亲戚叫什么名字?

Php 如何获得型号';你的亲戚叫什么名字?,php,laravel,Php,Laravel,有没有办法称呼一个关系的名字 与此相反: $user->comments()->create([]); 我想用这样的东西: $relation = 'comments'; $user->getRelation($relation)->create([]); $relation = 'comments'; $user->$relation->create([]); 我已经试过了,但是我得到了: "Undefined index: comments" 您

有没有办法称呼一个关系的名字

与此相反:

$user->comments()->create([]);
我想用这样的东西:

$relation = 'comments';
$user->getRelation($relation)->create([]);
$relation = 'comments';

$user->$relation->create([]);
我已经试过了,但是我得到了:

"Undefined index: comments"

您的意思是提供动态关系名称吗?如果是这样,您可以这样做:

$relation = 'comments';
$user->getRelation($relation)->create([]);
$relation = 'comments';

$user->$relation->create([]);

我想你必须更具体一点。但如果你想从与雄辩者的关系中获得结果,你可以:

$books = App\Book::with('author')->get();
其中作者,是一种关系


来源:

有两个场景需要考虑。

1) 当您创建了一个用户并且没有附加注释时,
getRelation($string)
返回
错误:取消定义索引关系名称
2) 当你有一个带注释的用户,并通过
getRelation($string)
查找关系时,它就像一个符咒

解决此问题的方法是首先加载关系。让我给你举个例子

$user = new User();
$relation = 'comments';
//load method is used to load a relation.
$user->load($relation)->create(['field_name'=>"SOME VALUE"]);

试试看,让我知道它是否有效。

$user->$relationship()->create()
应该可以做到。Glat它有帮助。:)