【问题标题】:Hello i m stuck with Laravel eloquent relationship你好,我坚持 Laravel 雄辩的关系
【发布时间】:2021-01-16 17:42:38
【问题描述】:

我有两个表交易和产品,在产品表上我只有产品描述,可以分配给一个多于多个交易,现在我想在交易页面上显示产品描述,但我的关系无法正常工作, product table

deal table

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class Product extends Model
{
    //
protected $guarded=[];

 

    public function deals()
    {
    return $this->belongsTo(Deal::class,'product_slug','product_id');

    }

}
  





<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class Deal extends Model
{
    //
protected $guarded=[];

 


    public function products()
    {
   return $this->hasMany(Product::class,'product_slug','product_id');

    }


}

这就是我在控制器中调用函数的方式

    public function index()
        {
    $title='Today Deal';
    $deals=Deal::with('products')->get();

// dd($deals);
// return;
return view('welcome',compact('title','deals'));

   }

当我执行 dd 时我可以看到产品数据,但在查看时我在访问产品数据时收到此错误 未定义属性:Illuminate\Database\Eloquent\Relations\HasMany::$title(查看:D:\xampp\htdocs\bargin\resources\views\welcome.blade.php) 这就是我在交易循环中访问产品数据的方式

                                   <p>{{$deal->products()->title}}</p>

【问题讨论】:

    标签: php laravel eloquent


    【解决方案1】:

    问题出在你的循环中。 &lt;p&gt;{{$deal-&gt;products()-&gt;title}}&lt;/p&gt;.

    当您使用函数调用products() 访问关系时,您实际上是在将关系的一个实例返回到您可以添加查询方法的位置。

    例如,您可以使用$deal-&gt;products()-&gt;where(...)-&gt;get()


    要访问实际产品,您只需使用$deal-&gt;products

    @foreach($deal->products as $product)
        {{ $product->title }}
    @endforeach
    

    【讨论】:

    • 但交易标题和描述是单一的,可以与每个产品一起使用我已经在 laravle 6 中完成了相同的关系,但在 8 中会出现这些问题
    • @attaullah 不知道你在说什么。回顾答案,我对交易进行了多元化交易。我会解决的。
    • @attaullah 这种关系将让您访问与您正在进行的交易相关的产品。为了获得交易的标题和描述,您可以参考$deal-&gt;descriptiondeal-&gt;title,我还看到您从控制器传递了$title
    猜你喜欢
    • 1970-01-01
    • 2023-03-16
    • 2015-03-14
    • 2018-11-28
    • 2015-01-11
    • 2021-06-03
    • 2020-03-26
    • 1970-01-01
    相关资源
    最近更新 更多