Laravel雄辩模型hasMany错误“ Illuminate \ Database \ Eloquent \ Relations \ HasMany无法转换为字符串”

时间:2019-07-05 15:10:07

标签: php laravel eloquent

我创建了一个雄辩的模型:

class VehicleDetails extends Model
{
    //
    protected $table = 'v_vehicle_details';

    protected $primaryKey = 'model_id';

    public function tariffs()
    {
        return $this->hasMany('App\Tariffs', 'vehicle_model_id', 'model_id');
    }


}

相同的表结构是v_vehicle_details是

v_vehicle_details

关税表结构为

t_tariffs

正在像这样的控制器中调用模型:

public function booking_view(){

        $vehicle_details = new VehicleDetails();
        return $vehicle_details->find(5)->tariffs();
}

我需要获取所有关税的车辆详细信息,但是当我尝试抛出错误时, Illuminate \ Database \ Eloquent \ Relations \ HasMany无法转换为字符串。有人可以帮忙吗,我是laravel的新手。

  

这些不是实际的表,而是视图。

3 个答案:

答案 0 :(得分:2)

更改为

return VehicleDetails::with('tariffs')->find(5);

答案 1 :(得分:0)

这是因为在这种情况下,调用方法function addNewTable() { var data=SpreadsheetApp.openById("SpreadsheetId").getSheetByName('SheetName').getDataRange().getValues(); var doc=DocumentApp.getActiveDocument();//run from active document doc.getBody().appendTable(data); } 将返回一个关系对象->tarrifs(),这意味着您仍然必须对此对象执行查询才能获得结果。

如果您将其用作属性HasMany而不使用->tarifs,它将执行查询。 这和()只是一个快捷方式一样。

答案 2 :(得分:0)

将功能更改为:

public function bookingView(){
        $vehicle = VehicleDetails::with('tariffs')->find(5);       
         return view('your.view', compact('vehicle'));
}

with()eager load关税关系。

您可以按以下方式访问关税:

{{$vehicle->tariffs->anyAttributeYouWantToAccess}}