laravel 模型页面无法正常通信

问题描述 投票:0回答:1

在做客户项目时遇到挫折。

Laravel 正在阅读

“调用模型 [App\Models\Service] 上未定义的关系 [service_item]”。

它只是尝试从同一数据库中的两个不同表中读取数据。

我在不同的项目上使用了这种方法,使用了不同的命名变量,当时没有问题,但现在我不知道我做错了什么。

服务控制器

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use App\Models\Service;

class ServiceController extends Controller
{
    public function getService()
    {
        $services = Service::with('service_item:resource,resource_id')->get();
        return view('pages.service', compact('services'));
    }
}

服务模式

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class Service extends Model
{
    use HasFactory;

    public function service()
    {
        return $this->hasMany(Service::class);
    }
}

Service_Item 模型

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class Service_Item extends Model
{
    use HasFactory;

    public function serviceItem()
    {
        return $this->belongsTo(Service::class);
    }
}
php mysql laravel eloquent
1个回答
0
投票

查看两个模型中的模型关系都是错误的。

假设 service_items 表有 service_id 作为外键

服务模式应该是

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class Service extends Model
{
    use HasFactory;

    public function serviceItems()
    {
        return $this->hasMany(Service_Item::class);
    }
}

Service_Item Model 应该是

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class Service_Item extends Model
{
    use HasFactory;

    public function service()
    {
        return $this->belongsTo(Service::class);
    }
}

在控制器中

$services = Service::with('service_items:resource,resource_id')->get();

还建议将 Service_Item Model 的名称切换为 ServiceItem

© www.soinside.com 2019 - 2024. All rights reserved.