我有三个表Kudos,Kudoscategories和Specialpost。我需要从这些表中获取数据,并使用where条件检查帖子ID。
this.getComponentData( ).startupParameters
我需要做的是在条件$results = DB::table('kudos')
->select('kudos.description','kudoscategory.catname','kudoscategory.image','kudos.spid')
->join('kudoscategory', 'kudoscategory.id', '=', 'kudos.categoryid')
->where('kudos.spid', '=', $post_id)
->first();
return $results;
答案 0 :(得分:0)
您必须使用newsfeed_special_posts
添加另一个联接。
查询将类似于
$results = DB::table('kudos')
->select('kudos.description','kudoscategory.catname','kudoscategory.image','kudos.spid')
->join('kudoscategory', 'kudoscategory.id', '=', 'kudos.categoryid')
->join('newsfeed_special_posts', 'newsfeed_special_posts.main_post_id', '=', 'kudos.spid')
->where('kudos.spid', '=', $post_id)
->first();
return $results;
尽管这对于laravel不是一个好习惯。使用laravel雄辩的关系将更有效地获得这些结果。 https://laravel.com/docs/5.8/eloquent-relationships
答案 1 :(得分:0)
您仍然可以采用这种方式。仍然很有效避免sql注入,因为您要从3个表中获取所有记录。看到上面的表格,其未正确归一化。无论如何,尝试一下。
$results = DB::table('kudos')
->leftjoin('kudoscategory', 'kudoscategory.id', '=', 'kudos.categoryid')
->leftjoin('newsfeed_special_posts', 'newsfeed_special_posts.id', '=', 'kudos.spid')
->where('kudos.spid', '=', $post_id)
->first();
return $results;
答案 2 :(得分:0)
您可以尝试此代码 首先,创建模型Kudos,KudosCategory,NewsfeedSpecialPosts
荣誉模型
public function kudoscategory_dta()
{
return $this->belongsTo('App\Model\KudosCategory','categoryid');
}
public function newsfeed_special_posts_dta()
{
return $this->belongsTo('App\Model\NewsfeedSpecialPosts','spid','main_post_id ');
}
控制器
Kudos :: with('kudoscategory_dta','newsfeed_special_posts_dta')-> first();