【问题标题】:Laravel - Eloquent Relationship not working One to Many relationshipLaravel - 雄辩的关系不起作用一对多关系
【发布时间】:2020-05-30 10:23:51
【问题描述】:

我有两个具有一对多关系的模型。我想在刀片中显示具有关系的数据。

产品表

Table name = Products
PrimaryKey = pro_id
ForeignKey = cat_id

类别表

Table name = categories
PrimaryKey = cat_id

产品型号代码

namespace App;

use Illuminate\Database\Eloquent\Model;

class productsModel extends Model
{
    //code...
    protected $table      = 'products';
    protected $primaryKey = 'pro_id';

    // Every Products Belongs To One Category

    public function category()
    {
        # code...
        return $this->belongsTo('APP\abcModel','cat_id');
    }
}

类别型号代码

namespace App;

use Illuminate\Database\Eloquent\Model;

class categoryModel extends Model
{
    //code...
    protected $table      = 'categories';
    protected $primaryKey = 'cat_id';

    // One Category Has Many Products

    public function products()
    {
        # code...
        return $this->hasMany('App\productsModel','cat_id','pro_id');
    }
}

控制器代码

命名空间 App\Http\Controllers;

use Illuminate\Http\Request;
use App\productsModel;
class productsController extends Controller
{
    //code...
    public function products($category_id='')
    {
        # code...
        $data["products"] = productsModel::where
                            ('cat_id',$category_id)
                            ->get();        
        $data["categories"] = productsModel::where
                            ('cat_id',$category_id)->first()->category;
        echo "<pre>";
        print_r($data);
        echo "</pre>";
    }
}

错误: Symfony\Component\Debug\Exception\FatalThrowableError 找不到类“APP\categoryModel”

【问题讨论】:

  • 首先,您需要查看 PSR 标准以编写代码以及如何命名类
  • 应用程序!=应用程序。命名空间不区分大小写。

标签: php laravel laravel-5


【解决方案1】:

似乎有时您有App,有时是APP,虽然PHP 对类名不区分大小写,但您可能使用在文件名方面区分大小写的操作系统(Linux?)。

我建议到处只使用App,您的错误消息清楚地表明:APP。

【讨论】:

  • 是的,将products Model中的“APP”改为“App”后即可使用。
【解决方案2】:

您可以在模型文件中清楚地看到namespace 写为“namespace App;” 在那里,您为 app 文件夹定义了 namespace。因此,当您在任何地方使用此模型时,您需要按照定义namespace 的方式编写它。因此“App\categoryModel”。 您的代码应如下所示:

public function category()
{
    # code...
    return $this->belongsTo('App\categoryModel','cat_id');
}

也是一个真诚的请求,正如@alithedeveloper 提到的,请遵循 PSR 标准编写代码。

【讨论】:

    【解决方案3】:
    public function category()
    {
        return $this->belongsTo(abcModel::class,'cat_id');
    }
    

    public function products()
        {
            return $this->hasMany(productsModel::class,'cat_id');
        }
    

    【讨论】:

      猜你喜欢
      • 2019-06-07
      • 2012-10-08
      • 2019-07-09
      • 2018-10-27
      • 2023-04-07
      • 2019-08-13
      • 1970-01-01
      • 2018-11-14
      相关资源
      最近更新 更多