当前位置: 首页 > 知识库问答 >
问题:

从链接的雄辩模型中检索集合laravel

闻人越
2023-03-14

我正在使用Laravel5.3,需要一些关于雄辩的模型查询的帮助。我有三个模型(UserDetails、Categories、Articles)。我在用户详细信息之间有关系-

每个关系都运行良好,即Userdetails::find(1)-

我有一种感觉,范围可能是答案,但他们似乎不工作,当我尝试它。

模型中的关系

UserDetails.php

 public function Categories(){
    return $this->belongstoMany('App\Categories', 'users_cats',  'user_id','cat_id');
}

Categories.php

  public function articles(){
    return $this->belongsToMany('App\Article', 'article_categories', 'categoryID', 'articleID');
}

我研究了HasManyThrough函数,但就我所见,我在实现它时遇到了问题

  return $this->hasManyThrough('App\Article', 'App\Categories', TertiaryForeignKey, FinalForeignKey, LocalForeignKey);

我的桌子摆得很整齐

项目类别透视表

文章的主键

categoryID–类别的主键

用户数据透视表

user_id–userdetails的主键

cat_id-类别的主键

基于此,hasManyThrough应该是这样的?

 public function articles(){
    return $this->hasManyThrough('App\Article', 'App\Categories', 'user_id', 'articleID', 'id');
}

但是,这将返回错误找不到列:1054字段列表中的未知列categories.user_id

共有2个答案

梁华皓
2023-03-14

你只需要在UserDetails.php模型中这样声明关系:

public function categories()
{
    return $this->hasMany(Categories::class);
}

在Categories.php模型中:

 public function articles()
{
    return $this->hasMany(Articles::class);
}

然后,您可以检索控制器中的类别集合:

$userdetails = UserDetails::get();

将$categories变量传递到视图中,并使用foreach循环显示每条记录(其中articles是模型中的函数)

   @foreach($userdetails->categories as $usercategories )
        <div> {{$usercategories->name}} </div>

        @foreach($usercategories->articles as $categoryarticles )
          <div> {{$categoryarticles->name}} </div>
        @endforeach
   @endforeach

使用第二个foreach,您将访问属于该用户的类别的文章。

黄昊
2023-03-14

所以如果你想拥有这种关系

用户详情-

那么你需要做以下几点:

用户详细信息模型:

public function categories()
{
    return $this->hasMany(Category::class);
}

public function articles()
{
    return $this->hasManyThrough(Article::class, Categories::class);
}

类别模型:

public function userdetails()
{
    return $this->belongsTo(Userdetails::class);
}

public function categories()
{
    return $this->hasMany(Category::class);
}

文章范本:

public function categories()
{
    return $this->belongsToMany(Category::class);
}

然后,您可以调用用户详细信息::find(1)-

 类似资料:
  • 所以我有三个模型: 挑战 使用者 参赛者 挑战有它的主键 用户只有它的主键 而且进入者有外键挑战id和用户id 如果我从挑战中查询(我有挑战标识),用雄辩的方式让所有与该挑战相关的用户的最佳方式是什么?我基本上想要所有进入者数据和所有用户数据的集合。我一直在研究这种方法,但我似乎无法让它发挥作用。

  • 这可能是一个无关紧要的问题,但我想知道Laravel是否推荐某种方法来检查从

  • 我正在用Laravel 5.2开发一个Web应用程序,但有一个问题我无法解决。 我有一个扩展了雄辩模型的模型,但当我试图输出带有“where”的数据库表时,例如 它返回一个包含许多信息的集合,这些信息此时对我来说无用,比如“守卫”、“键入”...我的表的数据在“属性”下。遵循laravel的指南,我看到每个人都像我一样简单地使用它,然后用

  • 我将有一个充满涉及其他表(关系)的信息的表。此表中的大多数信息将只有引用相关表的ID。如果我使用“产品”作为此表的示例,对于某些列来说可能是这样的: 我想把这个“产品”表倒出到一个列表中。当我将其转储(关系)时,我需要查找这些列中的所有项。我知道如何做物品和物品,但是我不确定如果我有一个“产品”模型,我怎么能用雄辩的模型一次性做到这一点?我应该让产品表只是一个数据透视表吗?我可以用雄辩的模型做它,

  • 我有一个雄辩的模特, 用户:用户(id、用户名、密码、电子邮件、状态) 简介:简介(id、用户id、名字、姓氏、性别、出生日期) 在控制器逻辑中,我急切地加载Profile模型。 我能做到, 或 但是怎么做呢,

  • 我试图通过使用Laravel Eloquent获得数据,但我无法访问。无论何时尝试,它都显示尝试获取非对象的属性“name” 我有两个模型。类别和文章。类别有许多文章。以下是模型: 类别模型 文章模式 物品管理员 查看刀片(admin.article.pending) 在这里的刀片,我不能访问类别通过雄辩的属于功能,我没有得到背后的原因得到的消息: ErrorException(E_ERROR)试