Laravel-在刀片视图中从模型关系中检索属性

时间:2019-02-26 20:33:30

标签: php laravel laravel-5 view

我使用称为“ $product->relations->product_owner->user->attributes->name ”的外键在产品和用户之间建立了关系。当我将传递的值转储到视图中时,可以看到以下数据可用:

{{ $product->product_owner->user->name }}

但是如何从我的视图中访问它。我正在尝试浏览产品,然后执行以下操作:

{{ $product->product_owner->name }}

 @Override
    public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {

        for (int appWidgetId : appWidgetIds) {

            //TinyDb is SharedPreferences Class
            TinyDB tinydb = new TinyDB(context);
            int WidgetId= tinydb.getInt("WidgetID",-1);

            //Check if WidgetID is same as Added ID if yes UPDATE
            if (WidgetId == appWidgetId){
                updateAppWidget(context, appWidgetManager, appWidgetId);
                return;
            //Check if no widget is added then add widget and save widget ID to sharedPreferences
            } else if (WidgetId == -1){
                tinydb.putInt("WidgetID", appWidgetId);
                updateAppWidget(context, appWidgetManager, appWidgetId);
                return;
            }
            else
                {
                //Make toast to tell the user that only one widget is allowed
                Toast.makeText(context, context.getResources().getString(R.string.Only_one_widget_allowed), Toast.LENGTH_SHORT).show();
                }
        }
    }

但都不行,继续获取:

”试图获取非对象的属性“名称”

SCREEN GRAB OF THE OBJECT

3 个答案:

答案 0 :(得分:2)

如果name是属性,而product_owner是关系函数,请尝试以下操作:

{{ $product->product_owner()->name }}

答案 1 :(得分:2)

您认为代码必须与此类似

@foreach($products as $product)
    {{ $product->product_owner->name }}
@endforeach

此代码表示每个产品都有product_owner。当一个产品不具有product_owner时,$product->product_owner的大小写值为Null,那么您的代码为null->name,则会出错。要进行修复,您必须检查关系是否为空或使用??运算符。将您的代码更改为

@foreach($products as $product)
    {{ $product->product_owner->name ?? ''}}
@endforeach

@foreach($products as $product)
    @if($product->product_owner)
        {{ $product->product_owner->name}}
    @endif
@endforeach

答案 2 :(得分:1)

您的product_owner不是stdClass。它是数组。因此,您无法使用“->”运算符访问此数组的键。尝试

{{ $product->product_owner['name'] }}