Eloquent - 在联合请求中提出请求

时间:2014-09-19 17:34:38

标签: php laravel eloquent

我想与Eloquent(在Laravel中)提出这个要求:

$user = User::find(1);
$product = $user->products()->where('id', 1)->first();

但是列ID在表用户和表产品中,所以我有一个错误(列不明确)。我想在没有set"产品的情况下使用它"在代码中很难(因为表名最终可能会改变......)。

如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

在这种情况下,您可以使用以下内容:

$id = 1;
$user = User::with(array('products' => function($q) use($id){

    // You may use this
    $table = $q->getRelated()->getTable();
    $q->where("{$table}.id", $id);

    // Or if this is a primary Key then you mau use this
    $q->where($q->getRelated()->getQualifiedKeyName(), $id);

}))->find($id);

// Get the first product
$product = $user->products->first();

答案 1 :(得分:0)

您必须动态获取表名。有关详细信息,请参阅this question