我有一个问题,正在寻找一个很好的解决方案。
我有这些db表:
游戏对象。php:
public function gameObjectAttributes()
{
return $this->belongsToMany('App\Models\GameObjectAttribute')->withPivot('value')->withTimestamps();
}
GameObjectAttribute.php:
public function gameObjects()
{
return $this->belongsToMany('App\Models\GameObject');
}
现在,我试图获得所有GameObjectType的GameObject,并用透视列值过滤结果。
$this->model->where('name', $gameObjectTypesEnum)->first()->gameObjects()->join('game_object_game_object_attribute', 'game_objects.id', '=', 'game_object_game_object_attribute.game_object_id')->where('value', '=', '4')->get());
我在这里使用了一个连接,但是有没有办法用雄辩的关系来做呢?
这将返回给我所有“军队”类型的游戏对象:
$this->model->where('name', $gameObjectTypesEnum)->first()->gameObjects()->get();
“gameObjects()”返回我一个集合,在这里我不能调用类似
$this->model->where('name', $gameObjectTypesEnum)->first()->gameObjects()->withPivot('value', 3)->get();
或者
$this->model->where('name', $gameObjectTypesEnum)->first()->gameObjects()->gameObjectAttributes->wherePivot('value', 3)->get();
在这里,我可以迭代收集'gameObject()',并与Foreach检查支点是否有值=3,但一定有比这更好的解决方案。我是新来laravel...
另外
我试着去
>
按GameObjectType获取所有游戏对象=
GameObjectType::其中('name',$gameObjectTypesEnum)-
然后,我尝试过滤pivot,以仅获取具有给定GameObjectType和pivot值(例如3)的游戏对象。
-
我做错了什么,或者用雄辩的语言是不可能做到的:-(
提前谢谢大家。
顺致敬意,
如果我没有误解,
->wherePivot('value',4)
除了您的查询之外,还有一种雄辩的连接方式。
你可以这样做
$gameObjects = GameObject::where('name', $gameObjectTypesEnum)->whereHas('gameObjectAttributes', function($query)
{
$query->where('value', 3);
})->get();
雄辩的关系如下: 商店属于许多商店时代(属于许多) 数据透视表(store\u day\u time\u stores)有一个名为“user\u id”的键,storedaytimes表有一个名为“date”的字段。 我想根据给定的“用户id(来自数据透视表)”和“开始”和“结束”日期(来自storedaytime表)过滤“storedaytimes”中的记录。 我现在的问题是 它产生了一个看起来
我正在使用Laravel5.1进行CMS开发。我有一个简单的帖子结构,用户和用户都可以喜欢帖子。 帖子和用户有多对多关系,并使用数据透视表来表示关系。 职位模型有 用户模型有 我想列出用户的最新活动。例如。 Username1喜欢Post2 Username5喜欢Post9 用户名30喜欢Post25 我知道我必须像这样编写sql查询- 上面的查询工作正常,但有没有办法使用laravel雄辩?
我试图创建一个关系,通过一个名为年级的模型访问一个名为注释的表,通过年级中的学生加载 年级模型和学生模型都属于其他模型 根据我的理解,不可能访问需要透视表的hasManyThrough关系(注释没有年级标识符,只有学生标识符) 我为Laravel 4@HasManyThrough找到了这些函数,它们具有一对多关系,但它给了我一个错误类“App\illumb\Database\Eloquent\Re
当我从前端提交表单数据时,我正试图创建一个新记录,我正在绞尽脑汁思考如何才能做到这一点。我已经找了一些例子,但还没有找到什么好运气。因此,我正在为新的约定提交数据,并且我的约定与任务共享数据透视表关系。这是关系结构。 用户有许多任务 如果我提交数据来存储一个新的约定,同时我还想存储一个新的任务,那么我很难理解应该使用什么方法来完成这项任务。 我确实理解,我需要在填充透视表之前存在参与和任务。 订婚
我有一个有两个透视表的表单。其中一个工作很好,但我似乎不能使第二个工作,尽管他们是相当相似的。不起作用的是一个名为'photos'的图像表和名为'releases'的表单上载。我使用“photo_id”和一个“release_id”字段将数据透视表称为“photo_releases”。 数据库透视表 下面是发布模式 和照片模式 和ReleaseController 此函数中使用了两个透视表。使用
我有这种多对多的关系Laravel雄辩的关系模型是: 我可以在控制器中执行此操作: 在这里,我只通过直接枢轴关系获得email_subtype_id,但必须做额外的工作来获得相关的电子邮件子类型名称。 我需要获得电子邮件子类型名称[直接]从第三个模型电子邮件子类型关系oneTo很多[有很多和属性到]涉及到枢轴模型与电子邮件子类型模型使用类似的东西: 请帮忙!