Php 使用雄辩的ORM laravel连接多个表模型
这是我的问题:Php 使用雄辩的ORM laravel连接多个表模型,php,laravel,eloquent,Php,Laravel,Eloquent,这是我的问题: $batchDetails=BatchModel::join('class', 'batch.Class', '=', 'class.AutoID') ->get() ->toArray(); <?php class BatchModel extends Eloquent { protected $primaryKey = 'AutoID'; protected $table = 'batch'; protected
$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')
);
}
批量模型:
$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();
我有以下错误“调用未定义的方法illumb\Database\Query\Builder::classModel()”,但您确实将方法classModel()
添加到了BatchModel
?是的,我在类和批处理模型中添加了方法。该错误通常仅在with()
中的名称与方法名称不相同(或该方法根本不存在)时出现。您可以检查拼写错误并重试:$batch=BatchModel::first()$批量->类模型()代码>并查看是否有错误。我可以将其放在哪里?在控制器中?