Laravel 属于不工作

Laravel belongsTo not working(Laravel 属于不工作)
本文介绍了Laravel 属于不工作的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

问题描述

我的应用中有 2 个模型,用户"和'MedicineType'(每个用户属于一个 MedicineType).

I have 2 models in my app, 'User' & 'MedicineType' (each User belongs to one MedicineType).

我使用belongsTo() 和hasMany() 在两个模型之间建立了一对多关系.hasMany() 关系完美运行,但belongTo() 不起作用.有谁知道我哪里出错了?

I made the one-to-many relation between two model using belongsTo() and hasMany(). hasMany() relation works perfectly but belongTo() doesn't work. Does anyone know where did I make a mistake?

User::find(1)->medicine_type [这不返回任何内容]

User::find(1)->medicine_type [this returns nothing]

MedicineType::find(1)->users [返回用户]

MedicineType::find(1)->users [this returns users]

这是模型的代码:

class MedicineType extends Eloquent {

    public function users()
    {
        return $this->hasMany('User');
    }
}


class User extends Eloquent {

    public function medicine_type()
    {
        return $this->belongsTo('MedicineType');
    }
}

这是我的数据库结构:

users:
    id
    name
    medicine_type_id 

medicine_types:
    id
    name

推荐答案

你的关系不工作的原因不是因为模型中指定的关系,而是因为 User 模型中的方法命名而不是指定外部键.

The reason your relation is not working is not because of the relations specified in the model, but because of the method naming in the User model and not specifying the foreign key.

代替:

public function medicine_type()
{
    return $this->belongsTo('MedicineType');
}

使用:

public function medicineType()
{
    return $this->belongsTo('MedicineType', 'id');
}

我希望这对你有用;)

一切都在一起:

<?php // app/models/MedicineType.php

class MedicineType extends Eloquent {

   // Determines which database table to use
   protected $table = 'medicine_types';

   public function users() 
   {
      return $this->hasMany('User');
   }

}

和:

<?php // app/models/User.php

class User extends Eloquent {

   // Determines which database table to use
   protected $table = 'users';

   public function medicineType() 
   {
      return $this->belongsTo('MedicineType', 'id');
   }

}

测试它是否有效:

$user = User::find(1);
return $user->medicineType->name;

这成功返回了相关的medicine_type 的名称.

This successfully returns the related medicine_type's name.

我希望这能帮助你进一步;)

I hope this helps you further ;)

这篇关于Laravel 属于不工作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

本站部分内容来源互联网,如果有图片或者内容侵犯了您的权益,请联系我们,我们会在确认后第一时间进行删除!

相关文档推荐

DeepL的翻译效果还是很强大的,如果我们要用php实现DeepL翻译调用,该怎么办呢?以下是代码示例,希望能够帮到需要的朋友。 在这里需要注意,这个DeepL的账户和api申请比较难,不支持中国大陆申请,需要拥有香港或者海外信用卡才行,没账号的话,目前某宝可以
PHP通过phpspreadsheet导入Excel日期,导入系统后,全部变为了4开头的几位数字,这是为什么呢?原因很简单,将Excel的时间设置问文本,我们就能看到该日期本来的数值,上图对应的数值为: 要怎么解决呢?进行数据转换就行,这里可以封装方法,或者用第三方的
mediatemple - can#39;t send email using codeigniter(mediatemple - 无法使用 codeigniter 发送电子邮件)
Laravel Gmail Configuration Error(Laravel Gmail 配置错误)
Problem with using PHPMailer for SMTP(将 PHPMailer 用于 SMTP 的问题)
Issue on how to setup SMTP using PHPMailer in GoDaddy server(关于如何在 GoDaddy 服务器中使用 PHPMailer 设置 SMTP 的问题)