[英]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.