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

如何合并两个雄辩的收藏?

庄实
2023-03-14

我有一个问题表和一个标签表。我想从给定问题的标签中获取所有问题。例如,我可能会在给定的问题上附加“旅行”、“火车”和“文化”的标签。我希望能够获取这三个标签的所有问题。看起来很棘手的是,问题和标签关系在《雄辩》中被定义为归属的多对多关系。

我想尝试合并以下问题集合:

foreach ($question->tags as $tag) {
    if (!isset($related)) {
        $related = $tag->questions;
    } else {
        $related->merge($tag->questions);
    }
}

但它似乎不起作用。似乎没有合并任何内容。我这样做对吗?此外,是否有更好的方法以雄辩的方式获取多对多关系中的一行行?

共有3个答案

萧秋月
2023-03-14
$users = User::all();
$associates = Associate::all();

$userAndAssociate = $users->merge($associates);
汤修贤
2023-03-14

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();
董飞
2023-03-14

合并方法返回合并的集合,它不会改变原始集合,因此您需要执行以下操作

$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' 如何使用两个参数更新查询使用雄辩。