Получить данные из разных таблиц, используя внутренние объединения - PullRequest
0 голосов
/ 11 апреля 2020

У меня есть столбец с результатами «user_id», «test», «subject», и в datatable я хочу получить «test_name», которое сохраняется в таблице «tests», имя студента «name», сохраненное в «users» и «имя субъекта» в таблице «субъекты» в столбце «субъекты» теперь говорят мне, как лучше всего получить эти данные.

До сих пор я пробовал это, но получал ноль при сбросе.

 $result = DB::table('results')
->where([
    ['results.subject',$request->subject],
    ['test',$request->test],
    ['user_id',$request->name]
])
 ->join('users','results.user_id','=','users.name')
->join('tests','tests.id','=','results.test')
->join('subjects','subjects.id','=','results.subject')
->select('results.*','users.name','tests.test_name','subjects.subjects As s_subject')
->first();

dd($result);

любой, кто может подсказать мне наилучшее возможное решение.

1 Ответ

1 голос
/ 11 апреля 2020

Вы должны использовать силу модели Eloquent Laravel. Вы должны создать класс модели Results следующим образом (и, очевидно, необходимо создать класс модели User, Test и Subject)

Results. php

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
use Carbon\Carbon;

class Results extends Model
{

    /**
     * The attributes that aren't mass assignable.
     *
     * @var array
     */
    protected $guarded = ['id'];

    /**
     * Get the user profile associated with the results.
     */
    public function user()
    {
        return $this->hasOne('App\User', 'user_id');
    }

    /**
     * Get the test details associated with the results.
     */
    public function test()
    {
        return $this->hasOne('App\Test', 'test');
    }

    /**
     * Get the subject associated with the results.
     */
    public function subject()
    {
        return $this->hasOne('App\Subject', 'subject');
    }
}

Контроллер . php

$results = App\Results::where(['subject' => $request->subject, 'test' => $request->test, 'user_id' => $request->name])->first();

Теперь вы получите объект Result со свойством test, subject и test.

Обратите внимание: - вы должны предоставить выходные данные, когда вы задаете любой вопрос.

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