加入Laravel表

时间:2019-06-11 06:16:19

标签: laravel

我有三个表Kudos,Kudoscategories和Specialpost。我需要从这些表中获取数据,并使用where条件检查帖子ID。

我在此处附加了数据库表的屏幕截图 enter image description here

enter image description here enter image description here 我已经尝试过了,但是没有任何结果。

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;

下使用以下结果

3 个答案:

答案 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();