使用雄辩的ORM拉拉维尔连接多个表模型


Join more then one table model using Eloquent ORM laravel

这是我的查询:

$batchDetails=BatchModel::join('class', 'batch.Class', '=', 'class.AutoID')
    ->get()
    ->toArray();

批次型号:

<?php
class BatchModel extends Eloquent
{
    protected $primaryKey = 'AutoID';
    protected $table = 'batch';  
    protected $fillable = array('Class','batch','Statedate','Enddate');
    public $timestamps = false;
    public function batch(){
        return $this->hasMany('BatchModel', 'Class');
    }
    public static $rules = array(     
        'Class' => 'required',         
        'batch' => 'required', 
        'Statedate' => 'required', 
        'Enddate' => 'required', 
        );
}

班级模型:

<?php
class ClassModel extends Eloquent
{
    protected $primaryKey = 'AutoID';
    protected $created_at = 'CreatedAt';
    protected $updated_at = 'UpdatedAt';
    protected $table = 'class';
    protected $guarded = array('ClassName');
    protected $fillable = array('ClassName', 'ClassSection', 'ClassCode');
     public function classModel(){ 
        return $this->belongsTo('ClassModel', 'Class');
    }
    public $timestamps = true;

    public static $rules = array(
        'ClassName' =>  array('required', 'unique:class','regex:/^./'),
        'ClassSection' => 'required',
        'ClassCode' => array('required', 'unique:class')
                             );

}

我不想使用像"类和批处理"这样的表名。我只想使用模型名称而不是表和表属性。

所以我的问题是如何仅使用模型名称进行上述连接查询?

你可以为此使用雄辩关系。

class BatchModel extends Eloquent {
    public function classModel(){ // normally I'd use only "class" but that's a reserved word so..
        return $this->belongsTo('ClassModel', 'Class');
    }
}

class ClassModel extends Eloquent {
    protected $primaryKey = 'AutoID';
    public function batch(){
        return $this->hasMany('BatchModel', 'Class');
    }
}

不确定我是否做对了一切,但它应该是类似的。现在你可以像这样查询它:

$batchDetails = BatchModel::with('classModel')->get();