2017-05-15 52 views
2

我在SQL中为空。如何使用Laravel进行SQL查询?

我有两个表workstypes

works包含一个foreign_key type_id它引用一个工作类型(在我的DB中,这是一个类型的ID)。

type包含ID,nameslug

我想从一个特定类型得到所有的作品。示例:获取所有类型为website的作品(网站是slug)。

我对我的模型有关的工作

public function type() 
{ 
    return $this->belongsTo('App\Models\Type'); 
} 

我的关系,我的模型类型

public function works() 
{ 
    return $this->hasMany('App\Models\Work'); 
} 

我试过,但它是完全以错误

Work::with('types')->where('slug', $request->get('type'));

谢谢!

+2

'类型::用( '作品') - >在哪里( '塞',$变量) - >第一();' – Ohgodwhy

+0

@Ohgodwhy - 正确的,那么把所有的作品,使用'类型: :with('works') - > where('slug',$ request-> get('type')) - > first() - > works;' –

回答

5

你的关系被定义为type和你加载types

$works = Work::whereHas('type', function ($query) use ($request) { 
    $query->where('slug', $request->get('type')); 
})->get(); 
+1

非常感谢,我了解您的要求并且它的工作 – Jeremy

-1

我建议使用:

$typeSlug = $request->get('type'); 
$type = Type::with('works')->where('slug', $typeSlug)->first(); 
$works = $type ? $type->works : null; 

注意,我建议你调用输入名称 “typeSlug” 或 “TYPEID” 的清晰度。

+0

类型输入是slug,而不是id。 – Sandeesh

+0

@Sandeesh啊,我的错。固定。 –