Elloquent ORM Model::with() returning NULL



我在使用 Model 对象的->with()方法检索对象时遇到问题。

在我的应用程序中,我有 4 个表(我在这里写我认为是我的表的基本字段,所以(:

**Categories**:
id
**Subcategorie**
id
id_categorie
**UserSubcategorie**
id_user
id_subcategorie
**Lawyers**
user_id

我正在尝试获取给定分类的所有用户(这意味着所有用户都连接到所有分类的子分类(

我的要求如下:

$categorie = LegalCategory::whereIn('id', $arrayCat)->with('legal_subcategories')->get();
foreach ($categorie as $k =>$cat){
$selectedCat[$k]['categorie'] = $cat;
$selectedCat[$k]['lawyers'] = 
Lawyer::Join('lawyers_legal_subcategories', 'lawyers.user_id', '=', 'lawyers_legal_subcategories.user_id')
->with('lawyer_subcategories')
->whereIn('lawyers_legal_subcategories.legal_subcategory_id', $cat->legal_subcategories)
->get();                                                            
}

我正确地得到了律师,但是当我调查lawyer->legal_subcategories时,我有NULL

我不明白为什么,因为当我尝试这个时:

Lawyer::orderBy('created_at')->take(4)->with('lawyer_subcategories')->get()

我在律师对象中有我的子类别。

有人知道问题可能是什么吗?

问题出在这一行:

->whereIn('lawyers_legal_subcategories.legal_subcategory_id', $cat->legal_subcategories)

您需要传递 ID 数组而不是所有子类别!

$categorie = LegalCategory::whereIn('id', $arrayCat)
->with('legal_subcategories')
->get();
foreach ($categorie as $k =>$cat){
$selectedCat[$k]['categorie'] = $cat;
$selectedCat[$k]['lawyers'] = 
Lawyer::Join('lawyers_legal_subcategories', 'lawyers.user_id', '=', 'lawyers_legal_subcategories.user_id')
->with('lawyer_subcategories')
->whereIn('lawyers_legal_subcategories.legal_subcategory_id', 
$cat->legal_subcategories->pluck('id'))
->get();                                                            
}

你应该学习如何使用有很多通过和渴望加载。这将使您的生活更轻松。

在您的情况下,您正在进行大量查询,从长远来看,这将使您的数据库受到影响。急切的加载和Laravel雄辩提供了非常有效的功能来处理此类情况。

如果模型定义正确,则使用 with(( 方法检索所有需要的数据。

最新更新