我有一个问题表和一个标签表。我想从给定问题的标签中获取所有问题。例如,我可能会在给定的问题上附加“旅行”、“火车”和“文化”的标签。我希望能够获取这三个标签的所有问题。看起来很棘手的是,问题和标签关系在《雄辩》中被定义为归属的多对多关系。
我想尝试合并以下问题集合:
foreach ($question->tags as $tag) {
if (!isset($related)) {
$related = $tag->questions;
} else {
$related->merge($tag->questions);
}
}
但它似乎不起作用。似乎没有合并任何内容。我这样做对吗?此外,是否有更好的方法以雄辩的方式获取多对多关系中的一行行?
$users = User::all();
$associates = Associate::all();
$userAndAssociate = $users->merge($associates);
Collection
上的并()
方法不会修改调用它的集合。它返回一个新集合,其中合并了新数据。你需要:
$related = $related->merge($tag->questions);
然而,我认为你从错误的角度处理这个问题。
因为您正在寻找符合特定标准的问题,所以以这种方式查询可能会更容易。有()
和其中有()
方法用于根据相关记录的存在生成查询。
如果您只是在寻找具有任何标记的问题,您将使用have()
方法。因为您正在寻找带有特定标记的问题,所以您可以使用where have()
来添加条件。
因此,如果您希望所有问题至少有一个标记为“旅行”、“火车”或“文化”,您的查询如下:
$questions = Question::whereHas('tags', function($q) {
$q->whereIn('name', ['Travel', 'Trains', 'Culture']);
})->get();
如果您希望所有问题都具有这三个标签,那么您的查询将如下所示:
$questions = Question::whereHas('tags', function($q) {
$q->where('name', 'Travel');
})->whereHas('tags', function($q) {
$q->where('name', 'Trains');
})->whereHas('tags', function($q) {
$q->where('name', 'Culture');
})->get();
合并方法返回合并的集合,它不会改变原始集合,因此您需要执行以下操作
$original = new Collection(['foo']);
$latest = new Collection(['bar']);
$merged = $original->merge($latest); // Contains foo and bar.
将示例应用于代码
$related = new Collection();
foreach ($question->tags as $tag)
{
$related = $related->merge($tag->questions);
}
问题内容: 我在MySQL中有两个表,其中第一个表称为用户,第二个表称为游戏。表结构如下。 使用者 id(主要) 电子邮件 密码 真正的名字 游戏 id(主要) user_one_id(外国) user_one_score user_two_id(外国) user_two_score 我的游戏桌在两个用户之间建立了两个外交关系。 我的问题是如何为该表结构建立模型关系?-根据laravel文档,我应
我有一个无法解决的问题。我有一个包含TitleID、TextID、ImageID的新闻表。还有三张表格,标题,文本,图片。我想把它们都放在一个模型里。但当我尝试时,得到的结果就像数组中的数组。但我想要的是: 雄辩的ORM对此的反应如下: 数据库结构 新闻= 头衔= 其他表类似于标题表。
我正在用Laravel 5.2开发一个Web应用程序,但有一个问题我无法解决。 我有一个扩展了雄辩模型的模型,但当我试图输出带有“where”的数据库表时,例如 它返回一个包含许多信息的集合,这些信息此时对我来说无用,比如“守卫”、“键入”...我的表的数据在“属性”下。遵循laravel的指南,我看到每个人都像我一样简单地使用它,然后用
问题内容: 我有第一个json: 第二个: 我想合并/合并两个数据数组,例如: (我现在不在乎)。 如何快速简便地做到这一点?这是我的尝试: 但是会引发异常: 问题答案: JArray dataOfJson1=json1.SelectToken(“data”);
我有两张表格,详细内容如下: 电子表格 id 鼻涕虫 标题 徽标 说明 价格 地位 流量表 id 电子课程id 日期 金额 类型\交通 我想用Elount laravel显示每天流量的ecourse数据。解决办法是什么? 非常感谢。
我有一个表:配置文件表有一个外键和主键。我想更新行基于两个条件。id==1和user=='admin' 如何使用两个参数更新查询使用雄辩。