访问Laravel中的父对象
我有三张桌子: langs:id-PK,langname lang_扇区:lang_id FK,扇区id FK,扇区名称。。。。 扇区:id PK 以下是Lang模型中的关系访问Laravel中的父对象,laravel,eloquent,pivot-table,Laravel,Eloquent,Pivot Table,我有三张桌子: langs:id-PK,langname lang_扇区:lang_id FK,扇区id FK,扇区名称。。。。 扇区:id PK 以下是Lang模型中的关系 public function sectors(){ return $this->belongsToMany('App\Sector') ->withPivot('sectname','sectshortname','sectdescription','sectshortdescript
public function sectors(){
return $this->belongsToMany('App\Sector')
->withPivot('sectname','sectshortname','sectdescription','sectshortdescription')
->whereNull('lang_sector.deleted_at')
->withTimestamps();
}
下面是部门模型中的关系
public function langs(){
return $this->belongsToMany('App\Lang')
->withPivot('sectname','sectshortname','sectdescription','sectshortdescription')
->whereNull('lang_sector.deleted_at')
->withTimestamps();
}
我创建了一个索引方法
public function index() {
$countLang = Lang::count();
$countSector = Sector::count();
$admins = Admin::all();
for ($i=1; $i<=$countLang; $i++) {
$langs = Lang::find($i);
$sectors[$i] = $langs->sectors()->get();
}
return view('admin.sectors.index', compact('admins', 'sectors', 'langs', 'countLang', 'countSector'));
}
这意味着我一定可以访问langs表及其列。。。问题是我该怎么做
感谢您的回答您可以使用
$sector->pivot->fieldName;
我看到一个逻辑问题
当ids持续运行时,它将正常工作
+-----+------------+
| id | langname |
| 1 | esp |
| 2 | esp2 |
| 3 | esp3 |
+-----+------------+
$countLang=Lang::count//3.
从1号到3号的路线
for永远不会到达id=4,因为在Lang::count中;是3
Lang :: find (1) ok
Lang :: find (2) error
Lang :: find (3) ok
阅读文档
最后我重写了我的sql请求。。。我想展示的是此请求的结果:
SELECT
sectors.*,
lang_sector.*,
langs.*
FROM sectors
INNER JOIN lang_sector ON sectors.id = lang_sector.sector_id
INNER JOIN langs ON lang_sector.lang_id = langs.id;
因此,我决定使用查询生成器:
$sectors = DB::table('sectors')
->join('lang_sector','sectors.id','=','lang_sector.sector_id')
->join('langs','lang_sector.lang_id','=','langs.id')
->select('langs.*', 'lang_sector.*', 'sectors.*')
->get();
那么在我看来,我不必使用任何枢轴的东西
只需这样写:
@foreach($sectors as $sector)
{{ $sector->anyfieldfromrequest }}
@endforeach
谢谢你的回答。。。主要是塞缪尔·洛扎,他向我展示了我第一次请求时遇到的问题。。。它可以工作,但是在$sector->pivot->fieldname中到达pivot表。。。其中不包含lang名称。。。我将更新我的帖子以显示我的数据库结构…你能提供关系代码以更清楚地说明你想要什么吗?那么你想知道如何访问langname吗?我已经阅读了文档。。。不幸的是我被困在这里。。。我希望我永远不会在我的应用程序中删除一个lang。。。我试图解决这个问题已经有相当长的一段时间了。。。
Lang :: find (1) ok
Lang :: find (2) error
Lang :: find (3) ok
SELECT
sectors.*,
lang_sector.*,
langs.*
FROM sectors
INNER JOIN lang_sector ON sectors.id = lang_sector.sector_id
INNER JOIN langs ON lang_sector.lang_id = langs.id;
$sectors = DB::table('sectors')
->join('lang_sector','sectors.id','=','lang_sector.sector_id')
->join('langs','lang_sector.lang_id','=','langs.id')
->select('langs.*', 'lang_sector.*', 'sectors.*')
->get();
@foreach($sectors as $sector)
{{ $sector->anyfieldfromrequest }}
@endforeach