繁体   English   中英

使用Eloquent ORM laravel连接多个表模型

[英]Join more then one table model using Eloquent ORM laravel

这是我的查询:

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

BatchModel:

<?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', 
        );

}

ClassModel:

<?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 and batch”。 我只想仅使用模型名称而不是表和表属性。

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

您可以为此使用雄辩的关系

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();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM