laravel

时间:2019-07-28 13:49:08

标签: laravel-5.7 table-relationships

我正在开发一个电子商务项目,其中有以下表格,

1。产品表

  • ID(int)
  • 标题(字符串)
  • 结构(unsignedInteger)
  • created_at(时间戳)
  • 我还在下面的迁移中使用了此代码。
$table->foreign('fabric')->references('id')->on('fabrics');

2。面料表

  • ID(int)

  • 标题(字符串)

我的模特是:

    class Product extends Model{
        public function fabric(){
            return $this->hasOne('App\Fabric','id', 'fabric');
        }
    }

    class Fabric extends Model{
            public function products(){
                return $this->belongsTo('App\Product', 'fabric', 'id');
            }
        }

我想使用此

查看产品织物
      {{ $product->fabric()->title }}

但是,它返回

  

Illuminate \ Database \ Eloquent \ Relations \ HasOne类的对象可以   不能转换为字符串

3 个答案:

答案 0 :(得分:0)

首先,我假设您已使用$fillablefabric模型中定义了title数组 您应该替换

  {{ $product->fabric()->title }}

通过

@isset($product->fabric)

       {{ $product->fabric->title }}
@endisset

答案 1 :(得分:0)

您应将{{ $product->fabric()->title }}替换为{{ $product->fabric->title }}

您可以将其替换为$product->fabric()->get()->title;

您使用原始代码行的目的是尝试打印出关系,而不是返回的对象。

答案 2 :(得分:0)

我不能在属性和功能中使用相同的名称,而是在功能和功能中都使用 fabric 。财产。

因此我将表列从 fabric 更改为 fabric_id

有效!