gpt4 book ai didi

php - 如何从集合中获取 belongsToMany() 查询? MySQL/Laravel

转载 作者:行者123 更新时间:2023-11-29 01:19:58 25 4
gpt4 key购买 nike

我正在使用 Laravel 5.4.22(最新的)。在 MySQL 中,我有两个表,tag_categoriestags,它们形成了多对多的关系。我需要的是一个返回所选类别的所有标签的查询。当我只有一个对象时,我知道如何解决这个问题,我知道如何通过查询和循环每个对象来解决这个问题,但是整个事情必须有一个查询或基于 Eloquent 解决方案吗?

我知道下面的代码不起作用,因为我在集合而不是对象上使用 ->belongsToMany,但是如何以最简单的方式弥合这个差距?

$resultingTags = TagCategory::whereIn('id', $chosenCategoriesIds)
->belongsToMany(Tag::Class)->get();

dd($resultingTags);

最佳答案

belongsToMany 通常属于模型类,而不是动态调用的方法。当希望预先加载关系时,您可以在查询构建器上调用 with() 方法。

https://laravel.com/docs/5.4/eloquent-relationships#many-to-many

例如:

class User extends Model
{
/**
* The roles that belong to the user.
*/
public function roles()
{
return $this->belongsToMany('App\Role');
}
}

// Query
$users = User::with('roles')->get();
$rolesOfFirstUser = $users->first()->roles;

如果您尝试获取给定类别的所有标签,那么您应该查询标签,而不是 tag_categories。

Tag::whereHas('categories', function ($query) use ($chosenCategoriesIds) {
$query->whereIn('id', $chosenCategoriesIds);
})->get();

关于php - 如何从集合中获取 belongsToMany() 查询? MySQL/Laravel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44003969/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com