Laravel上的主键和外键

时间:2019-02-11 11:14:39

标签: php laravel

我知道已经问过这个问题,但是我被困住了... 我有2张桌子(俱乐部和俱乐部):

在我的表俱乐部中,我有3个字段id_club,name_club,type_sport_club

一切都在我的桌上Clubs

但是我被困在桌子上 Membres ,我不明白...

我的问题是我只得到我的fk号码,而没有俱乐部的名称... enter image description here

有关信息,我有3个字段id_membre,name_membre,fk_club

所以...在我的数据库中,我有这个

public function up()
    {
        Schema::create('membres', function (Blueprint $table) {
            $table->increments('id_membre');
            $table->string('name_membre');
            $table->integer('fk_club')->unsigned();
            $table->foreign('fk_club')->references('id_client')->on('clients');
            $table->timestamps();
        });
    }

然后在模型上我拥有

class Membre extends Model
{
    //
    protected  $fillable = ['name_membre', 'fk_club'];
}

在Controller之后,我有了

public function index()
     {
         $membres = Membre::oldest()->paginate(5);
         return view('admin.membres.index', compact('membres'))
                   ->with('i', (request()->input('page', 1)-1)*5);
     }

在我的index.blade中,我有这个

@foreach($membres as $membre)
                <tr>
                   <td> {{$membre->name_membre}}</td>
                   <td> {{$membre->fk_club}}</td>
                   <td>
                     <form method="POST" action="{{ route('membres.destroy', $membre) }} ">
                    <a class="btn btn-sm btn-warning" href="{{route('membres.edit',$membre->id_membre)}}">Editer</a>
                    @csrf
                    @method('DELETE')
                    <button type="submit" class="btn btn-sm btn-danger">Deleter</button>
                    </form>
                    </td>
                </tr>
                @endforeach

感谢您的帮助。

3 个答案:

答案 0 :(得分:1)

首先,您在id_client表中的成员迁移引用clients中的外键,您可能希望在id_club表中引用clubs(除非您的表实际上称为客户)。

然后,要获取会员所属俱乐部的名称,您必须在club模型中添加一个名为Membre的函数,该函数将返回类似$this->belongsTo('App\Club');的内容。如果还没有这样做,还应该向members模型中添加一个Club函数,该函数将返回类似$this->hasMany('App\Membre');的内容。

您认为您可以使用$membre->club->name_club访问俱乐部的名称。

Here's到Laravel有关口才关系的文档的链接,也许可以帮助您清除一切。

答案 1 :(得分:1)

您需要定义您的关系,

class Membre extends Model
{
    //
    protected  $fillable = ['name_membre', 'fk_club'];

    public function club()
    {
       return $this->belongsTo('App\Club', 'fk_club');
    }
}

现在您可以像下面这样使用

<td> {{$membre->club->name_club}}</td> 

答案 2 :(得分:1)

在您的Membre模型上添加此

class Membre extends Model{
  //
  protected  $fillable = ['name_membre', 'fk_club'];

  public function club(){
    return $this->belongsTo('App\Club', 'fk_club');
  }

}

您可以通过

在视图文件中获取此数据
<td> {{$membre->club->name_club}}</td> 

您的俱乐部模特添加了这个

class Club extends Model{
  public function membre(){
    return $this->hasMany('App\Membre', 'fk_club','id_club');
  }

}