我正在使用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
你只需要在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,您将访问属于该用户的类别的文章。
所以如果你想拥有这种关系
用户详情-
那么你需要做以下几点:
用户详细信息模型:
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)试