Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/254.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php “拉雷维尔”;“属于”;功能。不太清楚这是怎么回事。帮助从刀片模板访问相关型号信息_Php_Laravel_Eloquent_Laravel Blade - Fatal编程技术网

Php “拉雷维尔”;“属于”;功能。不太清楚这是怎么回事。帮助从刀片模板访问相关型号信息

Php “拉雷维尔”;“属于”;功能。不太清楚这是怎么回事。帮助从刀片模板访问相关型号信息,php,laravel,eloquent,laravel-blade,Php,Laravel,Eloquent,Laravel Blade,在我正在使用的一个类中,我在理解“belongsTo”方法时遇到问题。 我有一个“资产”模型,它不是我自己写的,但我想它是可以工作的,它有一个函数,我试图访问“AssetMake”表的“name”属性(外键和主键参数看起来是正确的): 在类似这样的刀片模板中,插入了$asset变量(并且成功地在同一页面上使用了该变量): 我已尝试在刀片模板中访问注入的$asset变量,如下所示: <td width="20%">{{ $asset->assetMake-&g

在我正在使用的一个类中,我在理解“belongsTo”方法时遇到问题。 我有一个“资产”模型,它不是我自己写的,但我想它是可以工作的,它有一个函数,我试图访问“AssetMake”表的“name”属性(外键和主键参数看起来是正确的):

在类似这样的刀片模板中,插入了$asset变量(并且成功地在同一页面上使用了该变量):

我已尝试在刀片模板中访问注入的$asset变量,如下所示:

<td width="20%">{{ $asset->assetMake->get }}</td>
<td width="20%">{{ $asset->assetMake->get() }}</td>
<td width="20%">{{ $asset->assetMake()->get }}</td>
<td width="20%">{{ $asset->assetMake->name }}</td>
<td width="20%">{{ $asset->assetMake()->name }}</td>
{{$asset->assetMake->get}
{{$asset->assetMake->get()}
{{$asset->assetMake()->get}
{{$asset->assetMake->name}
{{$asset->assetMake()->name}
assetmake表的“name”属性是我在这里真正需要访问的。
这是一种懒惰/急切的加载问题吗?我只是不确定这里到底发生了什么,以及为什么我不能访问该物业。我查过各种来源,我试过的都不管用,但我确信这是相当直接的。有什么提示吗?

访问相关模型的方法是像通常调用属性一样调用它。所以像
$asset->assetMake->name
这样的东西应该可以工作

在幕后,我相信Laravel使用PHP的神奇方法基于方法名称在模型上创建属性,以便它们指向相关模型(父或子)

类似地,如果您有一个
有许多类似这样的关系:


公共职能儿童()
{
返回$this->hasMany(Child::class,'Child_id',);
}
只需调用
$parent->children
,即可访问
子项

如果需要从父级访问子查询生成器,则必须调用
children()
方法

例如

$parent->children()->create($childData)

好的,我算出来了。这是控制器的问题。我仍在努力解决这个问题,拉雷维尔的魔力让我感到困惑。我在控制器查询中添加了一行“->join('assetmake','assetmake.id','asset.assetmake_id')”。并将“assetmake.name作为AssetMakeName”添加到select语句中

$assets = FleetFuel::where('fleet_fuel.customer_id', $user->customer_id)
                        ->where('fleet_fuel.isOrphan', 0)
                        ->where('fleet_fuel.hours', '>=', 0) // -1.00 = first ever record
                        ->where('fleet_fuel.burn', '>=', 0) // -1.00 = first ever record
                        ->join('asset', function($join) {
                            $join->on('fleet_fuel.unit_id', '=', 'asset.Unit_ID');
                            $join->on('fleet_fuel.customer_id', '=', 'asset.Customer_ID');
                        })                          
                        ->join('assettype', 'assettype.ID', 'asset.assettype_id')
                        ->join('assetmake', 'assetmake.id', 'asset.assetmake_id')
                        ->select('fleet_fuel.unit_id', DB::raw('max(fleet_fuel.delivery) as lastfuel'), 'asset.description', 'asset.Rego', 'assettype.Name as TypeName', 'assetmake.name as AssetMakeName')
                        ->groupBy('fleet_fuel.unit_id')->get();

        return view('fleetFuel.assets',
            [
                'companyName' => $companyName,
                'assets' => $assets
            ]
        );
然后在刀片视图中访问它:

<td width="20%" class="filter_make">{{ (isset($asset['AssetMakeName'])) ? ($asset['AssetMakeName']) : ("No make available")}}</td> 
{(isset($asset['AssetMakeName'])?($asset['AssetMakeName']):(“无可用”)}

首先,这是正确的:
$asset->assetMake->name
。您是否收到任何错误消息?这是使用“$asset->assetMake->name”-“尝试获取非对象的属性“name”时出现的错误。此外,使用{{$asset['description']}语法成功读取并显示了$asset对象的其他实例。我还尝试了$asset['assetMake']['name']和$asset['assetMake']->name和我已经检查了数据库中的值是否为空。
{{{$asset->assetMake->toSql()}
的输出是什么?这是使用查询生成器实现的一种方法,但这不是一种有说服力的关系。所以它可能会起作用,但这不是最好的方法。
<td width="20%">{{ $asset->assetMake->get }}</td>
<td width="20%">{{ $asset->assetMake->get() }}</td>
<td width="20%">{{ $asset->assetMake()->get }}</td>
<td width="20%">{{ $asset->assetMake->name }}</td>
<td width="20%">{{ $asset->assetMake()->name }}</td>
$assets = FleetFuel::where('fleet_fuel.customer_id', $user->customer_id)
                        ->where('fleet_fuel.isOrphan', 0)
                        ->where('fleet_fuel.hours', '>=', 0) // -1.00 = first ever record
                        ->where('fleet_fuel.burn', '>=', 0) // -1.00 = first ever record
                        ->join('asset', function($join) {
                            $join->on('fleet_fuel.unit_id', '=', 'asset.Unit_ID');
                            $join->on('fleet_fuel.customer_id', '=', 'asset.Customer_ID');
                        })                          
                        ->join('assettype', 'assettype.ID', 'asset.assettype_id')
                        ->join('assetmake', 'assetmake.id', 'asset.assetmake_id')
                        ->select('fleet_fuel.unit_id', DB::raw('max(fleet_fuel.delivery) as lastfuel'), 'asset.description', 'asset.Rego', 'assettype.Name as TypeName', 'assetmake.name as AssetMakeName')
                        ->groupBy('fleet_fuel.unit_id')->get();

        return view('fleetFuel.assets',
            [
                'companyName' => $companyName,
                'assets' => $assets
            ]
        );
<td width="20%" class="filter_make">{{ (isset($asset['AssetMakeName'])) ? ($asset['AssetMakeName']) : ("No make available")}}</td>