我的桌子
Modelos
ID
nome slug
marca_id
PECAS
ID
codigo
modelo_peca
modelo_id
peca_id
produtos
ID
categoria_id
codigo
诺姆
categorias
ID
诺姆
蛞蝓
我有这些模型
class Modelo extends Eloquent
{
public function pecas()
{
return $this->belongsToMany('Peca');
}
}
class Peca extends Eloquent {
public function modelos()
{
return $this->belongsToMany('Modelo');
}
public function produtos()
{
return $this->belongsToMany('Produto');
}
}
class Produto extends Eloquent {
public function pecas()
{
return $this->belongsToMany('Peca');
}
}
我正在尝试创建一个将与modelo相关的所有产品传递给视图的路径。怎么了?
Route::get('/modelo/{slug?}', function($slug = null) {
if ($slug) {
$id = Modelo::where('slug', $slug)->pluck('id');
$pecas = Modelo::find($id)->pecas;
$produtos = Peca::where('id', $pecas)->get();
}
return View::make('produto.home')->with('produtos', $produtos);
答案 0 :(得分:0)
使用预先加载
脱离我的头顶(也跨越语言障碍,我会尽我所能)
您似乎希望所有产品(produtos
)用于特定页面类别的其他分类(可能是错误的,但您可以根据需要调整代码)
where()
方法需要三个参数iirc,因此第一个查询将是$id = Modelo::where('slug', '=', $slug)->pluck('id');
这同样适用于其他陈述。
完整查询:
if($slug)
{
$query = Modelo::with('pecas.produto')
->where('slug', '=', $slug)
->get();
$produtos = $query->produto;
}
return View::make('produto.home')->with('produtos', $produtos);
在这里,我采取了不同的方法,渴望加载关系,我不是百分之百确定这是你希望如何完成这一点,但它希望为你提供一个基础,正确地使用你的关系雄辩。
您不需要手动获取主键并执行多个查询,请查看Laravel网站上的Eloquent文档。