Php Laravel在其中一个上查询模型';s相关模型

Php Laravel在其中一个上查询模型';s相关模型,php,laravel,model,eloquent,relationship,Php,Laravel,Model,Eloquent,Relationship,我有一个模型,它有一个相关的对象。这些数据可能存储在同一个模型中,但它驻留在不同的数据库中,该数据库仅用于查找数据并将其附加到我的模型 假设我有以下结构: BaseModel->AttachedModel 我想通过一些标准获得所有附加的模型,但是通过BaseModel,因为我需要更多的对象附加到BaseModel 我尝试使用BaseModel::where('attachedmodel.id',100)->get()(因为这看起来像with()方法,我希望它能工作) 在本例中,我尝试获取所有基本

我有一个模型,它有一个相关的对象。这些数据可能存储在同一个模型中,但它驻留在不同的数据库中,该数据库仅用于查找数据并将其附加到我的模型

假设我有以下结构:
BaseModel->AttachedModel

我想通过一些标准获得所有附加的模型,但是通过BaseModel,因为我需要更多的对象附加到BaseModel

我尝试使用
BaseModel::where('attachedmodel.id',100)->get()
(因为这看起来像
with()
方法,我希望它能工作)

在本例中,我尝试获取所有基本模型,其中有一个id为100的AttachedModel。但这失败了

可以这样做吗?或者我应该使用原始查询吗?

尝试以下方法:

BaseModel::with(['attachedmodel' => function($query) {
    $query->where('id', '100');
}])->get()
with()方法将加载该关系,而不会过滤任何结果。您需要的是whereHas查询,它根据相关模型上的条件过滤结果

$lookingForId = 100;
Basemodel::whereHas('attachedmodels', function ($query) use ($lookingForId) {
  $query->where('id', '=', $lookingForId);
})->get();

whereHas()第一个参数(在上面的代码中是'attachedmodels')应该是关系的名称,定义在模型类中

感谢您的回复。100输入变量当然是动态的。我在
函数($query)
之后和
之前添加了
use($input)
{
以便传入变量。另外,我想指出的是,有必要明确附加所有其他需要的相关对象,因为Eloquent只返回
方法中定义的关系模型。谢谢!+1并被接受。我认为这将是一个变量,但我使用了您提供的数据。您是欢迎:)。我相信你是对的。with construction@Lakes\u ftw建议的方法实际上并没有过滤结果。我正在尝试让你的建议生效,但这需要一些时间。MySQL目前还不太认可我们;)A+1感谢你的努力和贡献。欢迎来到这里!这应该是正确的答案。我会接受你的建议。谢谢告诉我它不工作,因为连接的模型使用了不同的驱动程序(MSSQL)虽然查询看起来是正确的,但它不起作用。我相信,这是因为一个查询试图合并两个数据库连接和驱动程序。@Lakes\u ftw所说的是对急于加载基本模型的关系的限制。谢谢:)是的,我知道它们。漂亮的功能;)这将是一个人口稠密的t能够通过实时数据库连接到另一个生产系统。因此,这不是一个合适的选项,但感谢您的建议。我决定降级筛选选项,只是为了搜索一个ID,它也是一个业务已知的ID。