我正在玩我的第一个Laravel项目,上面的问题可能有点令人困惑,但让我解释一下: -
我有3张桌子(实际上我有更多,但让我们忽略它),我有standards
,stddetails
& sections
如图所示: -
所以外键对应如下: -
stdPK
=列standards
的列stdFK
stddetails
ssctionPK
=列sections
的列ssctionFK
来自
表stddetails
情况如下: -
假设我要$id
与stdPK
的standards
匹配。 使用$id
,我需要获取表格sections
中的所有数据。问题是,我无法找到正确的查询,因为standards
和sections
表仅与stddetails
表相关联。
目前我在web.php
的查询是: -
Route::get('getstddtl/{id?}', function ($id) {
$stdsec = Section::
leftJoin('stddetails', 'ssctionFK', '=', 'ssctionPK')
->join('standards', function($join) use ($id){
$join->on('stdPK', '=', 'stdFK')
->where('stdFK', $id);
});
return view('standarddtl', [
'stdsec' => $stdsec
]);
});
我认为这应该很容易,男孩......我错了......我希望有人可以帮助我,因为我的大脑思维能力非常有限。
更新1: -
我在每个模型中设置了雄辩的关系,并使用Laravel的Eloquent方法检索数据: -
$stdsec = Stddetail::with('section')->find($id);
所有数据均来自stddetails
& sections
表,现在的问题是难以在显示页面的ssctionName
表格中显示sections
列中的数据,因为它会返回错误。
显示页面上的相关代码如下: -
@foreach ($stdsec as $task)
{{strtoupper($task->ssctionName)}}
@endforeach
显示错误: -
我认为雄辩的方法很好,现在显示部分给我带来了麻烦。关于如何解决这个问题的任何想法?
更新2: -
这里是每张桌子的模型: -
表standards
为标准模型: -
namespace App;
use Illuminate\Database\Eloquent\Model;
class Standard extends Model
{
public $primaryKey = 'stdPK';
public function stddetail()
{
return $this->hasMany(Stddetail::class, 'stdFK', 'stdPK');
}
}
表stddetails
为 Stddetail 模型: -
namespace App;
use Illuminate\Database\Eloquent\Model;
class Stddetail extends Model
{
public $table = "stddetails";
public $primaryKey = 'sdtlPK';
protected $fillable = ['stdFK', 'sdtlPgNo', 'sdtlLnNo', 'sdtlText', 'sdtlShrtnote', 'sdtlSchm', 'svrFK', 'ssctionFK', 'sdtlRefLbl'];
public function standard()
{
return $this->belongsTo(Standard::class, 'stdFK');
}
public function section()
{
return $this->belongsTo(Section::class, 'ssctionFK');
}
}
表sections
为部分模型: -
namespace App;
use Illuminate\Database\Eloquent\Model;
class Section extends Model
{
public $primaryKey = 'ssctionPK';
public function stddetails()
{
return $this->hasMany(Stddetail::class, 'ssctionFK', 'ssctionPK');
}
}
答案 0 :(得分:2)
看看雄辩的关系:https://laravel.com/docs/5.4/eloquent-relationships
您应该能够在模型(表格)之间设置正确的关系(hasMany,belongsTo等),并使用单个命令获取所有数据(Eloquent将为您创建所需的查询)。
在不相关的说明中,我建议改进您的命名约定。很难理解使用所有首字母缩略词和短名称的事件基本链接