遇到一些问题从mysql DB获取所需数据

时间:2019-10-23 15:36:27

标签: php mysql sql laravel

我有两个Mysql表,一个是比赛,另一个是投注。我将match_id作为betsettings表中的外键。现在我如何获取每个match_name的投注设置信息?我想在每个比赛名称下显示所有比赛的所有投注信息。我正在使用laravel

匹配表:

    Schema::create('matches', function (Blueprint $table) {
        $table->increments('id');
        $table->string('match_name');
        $table->timestamps();
    });

投注表:

    Schema::create('betsettings', function (Blueprint $table) {
        $table->increments('id');
        $table->integer('match_id')->unsigned();
        $table->dateTime('close_time');
        $table->string('status')->default('active');
        $table->timestamps();
    });

    Schema::table('betsettings', function( $table) {
          $table->foreign('match_id')
          ->references('id')
          ->on('matches')
          ->onDelete('cascade')
          ->onUpdate('cascade');
         });

1 个答案:

答案 0 :(得分:1)

您可能想看看雄辩的关系,以便更好地了解laravel如何处理这种关系

我假设您为每个表都有模型,让我们使用模型定义这些表之间的关系。

在匹配模型中

public function betsettings(){
    return $this->hasOne(BetSetting:class);
}

在BetSetting模型中

public function match(){
    return $this->belongsTo(Match:class);
}

现在,您可以使用热切加载获取每场比赛的投注设置。这是一个例子

$match = Match::with("betsettings")->find($id);

$match->betsettings // gives you related bet settings