как получить идентификатор из объединенной таблицы sql - PullRequest
0 голосов
/ 09 июля 2019

У меня есть объединенный стол из Сисвы и Келаса.в таблице kelas есть столбец idSiswa, он идет от id из таблицы siswa.вопрос в том, как я могу получить идентификатор от kelas, когда он присоединился.когда я пытаюсь получить идентификатор, он показывает идентификатор из таблицы siswa, а не из таблицы kelas, я также уже использовал правое соединение и левое соединение и все еще не получаю ответ

это моя таблица kelas this is my kelas table

это моя таблица siswa this is my siswa table

Я использовал построитель запросов из laravel для выполнения запроса, и это мой запрос

$siswa = DB::table('siswas')
            ->join('kelas', 'kelas.idSiswa', '=', 'siswas.id')
            ->where([
                ['kelas.kelas', '2'],
                ['kelas.semester', 'ganjil'],

            ])
            ->select('kelas.*', 'siswas.*')
            ->get();

1 Ответ

0 голосов
/ 09 июля 2019

Ваша проблема связана с конфликтом имен.Когда вы объединяете свои две таблицы, есть 2 fields.Чтобы решить эту проблему, вы должны использовать псевдоним SQL.Вы можете увидеть пример в этой теме

Вы также можете рассмотреть возможность использования Eloquent, который предлагает преимущества ООП и автоматически избегает подобных проблем.

namespace App;

use Illuminate\Database\Eloquent\Model;

class Kelas extends Model
{
    public function siswa()
    {
        return $this->belongsTo('App\Siswa', 'idSiswa', 'kelas');
    }
}
namespace App;

use Illuminate\Database\Eloquent\Model;

class Siswa extends Model
{
    public function kelas()
    {
        return $this->hasMany('App\Kelas', 'idSiswa', 'kelas');
    }
}
$siswa = App\Siswa::with('kelas')
    ->where([
        ['kelas', '2'],
        ['semester', 'ganjil'],
    ])
    ->get();

$firstSiswaKelasIds = $siswa->first()->kelas->map->id;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...