私は2つのテーブルを持っています 1.コース 2.ユーザー。多くの人から多人数のリレーションシップへデータを取り出す方法
ユーザーはコースリストからコースを選択できます。ユーザーは彼のユーザーの情報を保存することができます。管理者がユーザーの詳細を確認できるようになりました。ユーザーの詳細を表示したいユーザーの詳細ページがあります。ここで
<?php
namespace App;
use Illuminate\Foundation\Auth\User as Authenticatable;
class User extends Authenticatable
{
protected $table='users';
protected $fillable=['name','email','phone','course_id'];
public function roles()
{
return $this->belongsToMany('App\Role', 'user_role', 'user_id', 'role_id');
}
public function hasAnyRole($roles)
{
if (is_array($roles)) {
foreach ($roles as $role) {
if ($this->hasRole($role)) {
return true;
}
}
} else {
if ($this->hasRole($roles)) {
return true;
}
}
return false;
}
public function hasRole($role)
{
if ($this->roles()->where('name', $role)->first()) {
return true;
}
return false;
}
public function course()
{
return $this->hasMany('App\Course');
}
}
はコースのモデルである:ここで
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Course extends Model
{
protected $table='courses';
protected $fillable = ['name'];
public function user()
{
return $this->belongsToMany('App\User','course_id');
}
}
はコントローラです:
<?php
namespace App\Http\Controllers;
use App\User;
use App\Role;
use App\Fee;
use App\Course;
use Illuminate\Support\Facades\Input;
use Illuminate\Http\Request;
class AppController extends Controller
{
public function getStudentDetails(){
// $user = User::all();
$user = \DB::table('users')->where('course_id','!=',0) ->get();
return view('studentDetails', compact('user'));
}
}
私だけ示さなければならないが、それはユーザーモデルである。ここ
ではありませんリストからコースを選択したユーザーのデータどうすればいい?
表示するユーザーが見つかりませんでした。 "ユーザー詳細ページのリストからコースを選択した人"どういう意味ですか? – Erick
- > get()/ i didntは、何をしようとしているのですか?$ user = User :: try()( 'course_id'、1) - > get(); –
ユーザーはすでにコーステーブルからコースのリストを選択し、登録を完了しています。そして、このユーザーの詳細をコース名の他のページに表示し、コーステーブルでも確認する必要があることを示します。なぜなら、ユーザーテーブルでは、名前のないコースのIDのみを保存していたからです。 @Erick – Hola