Как объединить два стола в Laravel 5.4 - PullRequest
0 голосов
/ 19 ноября 2018

Я изучаю Laravel 5.4.Но я застрял в одном месте.

У меня есть две таблицы coursenames и branchnames .

таблица branchnames содержит: id, branchname, course_id

таблица coursenames содержит: id, coursename

имя_ресурса имеет уникальныйname и course_id of branchnames имеет идентификатор coursename, который можно повторить.

Мой BranchNameController:

public function index()
{
    $branchname = branchname::all();
    $coursename = coursename::all();
    return view('admin.branchname',compact('branchname','coursename'));
}

branchname.blade.phpэто:

<tbody>
   @foreach($branchname as $branchnames)
   <tr>
      <td>{{ $branchnames->branchname }}</td>
      <td>{{ $branchnames->course_id }}</td>
   </tr>
   @endforeach     
</tbody>

Я хочу показать название курса вместо {{$ branchnames-> course_id}} .Как это можно сделать?

модель branchname.php:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class branchname extends Model
{
//
}

модель coursename.php:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class coursename extends Model
{
//
}

Ответы [ 5 ]

0 голосов
/ 19 ноября 2018
 $branchname = branchname::join('coursenames','coursenames.id','=','branchnames.course_id')->select('coursenames.id as course_id','branchnames.branchname')->get();

Теперь с помощью Eloquent:

В модели Branchname

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class branchname extends Model
{

  // creating a one to many relationship with model coursename

  public function coursename(){

    return $this->hasMany('App\coursename');
  }

}

В названии курса:

    <?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class coursename extends Model
{
   public function branchname(){

    return $this->belongsTo('App\branchname');

   }
}

В контроллере:

public function index()
{
    $branchname = branchname::all();
    return view('admin.branchname')->with('branchname',$branchname);

}

По мнению branchname.blade:

<tbody>
    @foreach($branchname as $branchnames)
     <tr>
      <td>{{ $branchnames->branchname }}</td>
      <td>{{ $branchnames->coursename->course_name }}</td>
     </tr>
    @endforeach     
</tbody>
0 голосов
/ 19 ноября 2018

вы можете попробовать это

-> branchname.php (модель)

namespace App\Model;
use Illuminate\Database\Eloquent\Model;
class branchname extends Model
{
  public function course()
  {
      return $this->belongsTo(coursename::class,'course_id','id');
  }
}

-> BranchNameController.ph p

namespace App\Http\Controllers;
use App\Model\branchname;
use Illuminate\Http\Request;
use App\Model\coursename;

public function index()
{
   $branchname = branchname::orderBy('updated_at','DESC')->paginate(15);
    return view('branchname.branchname',['page'=>'Branchname','branchname'=>$branchname]);
}

-> branchname.blade.php

<tbody>
@foreach($branchname as $items)
<tr>
  <td>{{ $items->branchname }}</td>
  <td>{{ $items->course->id }}</td>
</tr>
@endforeach     
</tbody>
0 голосов
/ 19 ноября 2018

Вы можете использовать отношения Laravel для достижения этой цели. Ваш столбец название_курса относится к таблице курса.

Добавьте следующее отношение в вашей фирменной модели:

public function course() {
    return $this->belongsTo(\App\coursename::class, 'course_id')
}

Тогда в вашем контроллере индексную функцию используйте:

public function index()
{
    $branchname = branchname::with('course')->get();
    $coursename = coursename::all();
    return view('admin.branchname',compact('branchname','coursename'));
}

Тогда в поле зрения вы можете отобразить имя как:

<td>{{ isset($branchnames->course) ? $branchnames->course->coursename : "" }}</td>
0 голосов
/ 19 ноября 2018

попробуйте
модель BranchName

namespace App;

use Illuminate\Database\Eloquent\Model;

class branchname extends Model
{
  public function course(){
    return $this->belongsTo(coursename::class, 'coursename_id');
  }
}

// модель CourseName

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class coursename extends Model
{
  public function branch(){
    return $this->hasOne(branchname::class, 'coursename_id');
  }
}
0 голосов
/ 19 ноября 2018

с использованием join метода в laravel см.

 public function index()
    {
        $branchname = branchname::join('coursenames','coursenames.id','=','branchnames.course_id')->select('coursenames.id as course_id','branchnames.branchname')->get();
        return view('admin.branchname',compact('branchname'));
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...