访问Laravel中的父对象

访问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

我有三张桌子:

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','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