【问题标题】:How to display on blade view the contents of a selected id? Laravel如何在刀片视图上显示所选 id 的内容?拉拉维尔
【发布时间】:2019-03-20 13:02:44
【问题描述】:

我是 laravel 的新手,我很难显示我在刀片视图中选择的包中的项目。我可以在一个刀片视图中显示所有包。如果我在刀片视图上单击它,目标是让我查看包的内容。

PackageItems 表

id | package_id | item_id | qty

package_id 是来自packages 表的外键,item_id 来自items

这是我获取数据的方式:

控制器

public function showPackageItems($id)
{
    $package = Package::find($id)
    ->with('packageitems')
    ->where('id', '=', $id)
    ->get();
    return view('admin.packages.show')->with('package', $package);
}  

封装模型

public function packageItems()
{   
    return $this->hasMany(PackageItem::class, 'package_id') ; 
}

PackageItem 模型

public function package()
{   
    return $this->belongsTo(Package::class,'package_id') ; 
}

showItems 刀片视图

@foreach($package as p)
 <td>{{$p->packageItem->item_id}}</td> //error
 <td>{{$p->qty}}</td> //error as well
@endforeach  

我已经尝试过 dd($package) 并且得到了正确的结果。我的问题是如何在刀片视图上显示它。

【问题讨论】:

  • PackageItems 是一个集合,因此您不能像这样直接访问$p-&gt;packageItem。检查我的帖子
  • @bhavinjr 谢谢你的解释。您的代码完美运行,我接受了它作为答案。

标签: php html laravel


【解决方案1】:

试试这个

Controller

public function showPackageItems($id)
{
    $package = Package::find($id)
                     ->with('packageItems')
                     ->where('id', $id)
                     ->first();

    return view('admin.packages.show', compact('package'));
}  

Blade file

{{ $package->id }} //you can access package instance like that.

//for packageItems
@foreach($package->packageItems as $p)
 <td>{{ $p->item_id }}</td> 
 <td>{{ $p->qty }}</td>
@endforeach 

【讨论】:

  • 谢谢它运行良好。感谢您对收藏部分的解释,我还是很新,所以我需要学习更多的东西。接受为答案。
  • @AnthonyCruz 很高兴为您提供帮助。 :)
【解决方案2】:

在控制器中

public function showPackageItems($id)
{
    $package = Package::with('packageItems')
    ->where('id', '=', $id)
    ->get();
    return view('admin.packages.show')->with('package', $package);
}  

在刀片中

@foreach($package as $p)
 <td>{{$p->packageItem->item_id}}</td> //error
 <td>{{$p->qty}}</td> //error as well
@endforeach 

【讨论】:

    【解决方案3】:

    更改有关如何检索记录的代码

    使用 find 和 get 不同:the difference of find and get in Eloquent

    你还需要先获取packageitems

    public function showPackageItems($id)
    {
        $package = Package::with('packageitems')
        ->where('id', '=', $id)
         ->get();
       return view('admin.packages.show')->with('package', $package);
    } 
    

    【讨论】:

      猜你喜欢
      • 2021-07-05
      • 2015-03-16
      • 2015-03-28
      • 2019-04-24
      • 2020-08-03
      • 2015-04-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多