Php 在Laravel中加入两个模型

Php 在Laravel中加入两个模型,php,laravel,eloquent,Php,Laravel,Eloquent,我有一个存储在变量中的模型,如: $user=user::where('name','like',$test) ->订购人(“名称”); 我想建立另一个查询,在那里我可以加入$user。找不到正确的语法来执行此操作 我努力实现的目标: $numbers= Number::join($user, $users.id, '=', 'number.user_id') ->where('name', 'like', "%" . $validated['text'] .

我有一个存储在变量中的模型,如:

$user=user::where('name','like',$test)
->订购人(“名称”);
我想建立另一个查询,在那里我可以加入
$user
。找不到正确的语法来执行此操作

我努力实现的目标:

$numbers= Number::join($user, $users.id, '=', 'number.user_id')
    ->where('name', 'like', "%" . $validated['text'] . "%")])
    ->get();

假设您拥有典型的
模型,并且在
用户
数字
模型之间建立了许多
/
关系,那么这应该可以:

User::where(“name”、“like”、“test”)
->其中有(“数字”,函数($q){
$q->其中(“名称”、“类似”、“%$validated[text]]”;
})
->带(“数字”,函数($q){
$q->其中(“名称”、“类似”、“%$validated[text]]”;
})
->get();
当然,
where()。基于关系的
whereHas()
方法,仅查找具有匹配名称的号码的用户。假设要检索这些匹配的号码,则必须在上再次执行相同的筛选。

尝试此操作

$numbers= Number::whereHas('<Your Eloquent Model>',function($query)use($validated){
    $query->where('name', 'like', "%" . $validated['text'] . "%")]);
}    
->get();
$numbers=Number::whereHas(“”,函数($query)use($validated){
$query->where('name','like',“%”,“%”,$validated['text'].“%”);
}    
->get();

连接可以用这种方式编写

$records = User::select('users.*')
    ->where('users.name', 'like', $test)
    ->join('numbers', function($join) {
        $join->on('users.id', '=', 'numbers.id')
             ->where('numbers.name', 'like', "%" . $validated['text'] . "%");
    })
    ->get();

你能澄清一下你想做什么,以及你为解决这个问题做了哪些尝试吗?@miken32我编辑了我的问题你是说你想选择特定名称的号码,这些号码与特定名称的用户相连吗?
用户
数字
型号之间建立了什么关系?@miken32是的。用户有ID,数字有用户ID列请发布您的模型关系。那么with函数的用途是什么?另外,
$q
是否表示其他型号(
$numbers
)?
with()
加载相关的编号,如我链接到的文档中所述。否则,如果稍后获取它们,将导致另一个数据库查询。即时加载减少了您对数据库的查询数量。
$q
where has
with
函数在后台用于数据库查询的查询对象。因此,我无法在第二次查询中仅使用$users变量?您不需要第二次查询。Eloquent的全部要点是您根本不使用查询生成器,因为您正确地定义了模型的关系。您是否可以使用子查询获得一些信息?我不知道,因为这类事情通常更容易用雄辩的语言来完成,就像我提供的答案一样。