代码之家  ›  专栏  ›  技术社区  ›  rook99

如何通过名字得到模特的关系?

  •  0
  • rook99  · 技术社区  · 6 年前

    有没有办法叫一个亲戚的名字?

    而不是这个:

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

    我想用这样的东西:

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

    我试过了,但是我得到了:

    "Undefined index: comments"
    
    3 回复  |  直到 6 年前
        1
  •  0
  •   Rutvij Kothari    6 年前

    有两种情况需要考虑。

    1)当您创建了一个用户并且没有附加评论时 getRelation($string) 回报 Error: undefine index RELATION NAME 2)当你有用户评论并通过 getRelation($string) 很有魅力。

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

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

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

        2
  •  1
  •   hogarth45    6 年前

    我认为你必须更具体些。但如果你想和雄辩的人谈恋爱,你可以:

    $books = App\Book::with('author')->get();
    

    作者,是一种关系。

    来源 https://laravel.com/docs/5.6/eloquent-relationships

        3
  •  0
  •   JPark    6 年前

    是否要提供动态关系名称?如果是这样,你可以这样做:

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