Присоединяйтесь к столам Laravel - PullRequest
1 голос
/ 11 июня 2019

У меня есть три таблицы Kudos, Kudoscategories и specialpost. Мне нужно получить данные из этих таблиц и проверить идентификатор записи, используя условие where.

Я прикрепил скриншот таблицы базы данных здесь. enter image description here

enter image description here enter image description here Я уже пробовал это, но это не дает никакого результата.

$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;

Что мне нужно сделать, это получить результаты, используя приведенное ниже условие newsfeed_special_posts.main_post_id = kudos.spid

Ответы [ 3 ]

0 голосов
/ 11 июня 2019

вы все еще можете сделать это таким образом. все еще эффективно избегать внедрения 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;
0 голосов
/ 13 июня 2019

вы можете сначала попробовать этот код, создать модель Kudos, KudosCategory, NewsfeedSpecialPosts

Kudos Модель

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') -> первый ();

0 голосов
/ 11 июня 2019

Вы должны добавить еще одно объединение с 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...