Laravel将值传递给模型

杰米

现在,我雄辩地尝试此查询:

'MentorId'  => $employee->intern(true)->mentor(true)->MentorId,

在我employeeintern模型中,我得到了这个:

实习生

  /**
     * @return mixed
     */
    public function intern($withTrashed = false)
    {
        if($withTrashed == true)
        {
            return $this->belongsTo(internModel::class, 'InternId')->withTrashed();
        }

        return $this->belongsTo(internModel::class,'InternId');
    }

导师

 /**
     * @return mixed
     */
    public function mentor($withTrashed = false)
    {
        if($withTrashed == true)
        {
            return $this->belongsTo(mentorModel::class, 'MentorId')->withTrashed();
        }

        return $this->belongsTo(mentorModel::class,'MentorId');
    }

但它崩溃了:

BadMethodCallException in Builder.php line 2148:
Call to undefined method Illuminate\Database\Query\Builder::mentor()

我该如何解决?

- 编辑 -

员工

<?php

namespace App\src\employee;

use Illuminate\Foundation\Auth\User as Authenticatable;
use App\src\department\Department as departmentModel;
use App\src\employee\Employee as employeeModel;
use Illuminate\Database\Eloquent\SoftDeletes;
use App\src\intern\Intern as internModel;
use App\src\mentor\Mentor as mentorModel;
use App\src\employee\Role as roleModel;

class Employee extends Authenticatable
{
    use SoftDeletes;
    use EmployeeServiceTrait;

    /**
     * table name
     */
    protected $table = 'employee';

    /**
     * Mass assignment fields
     */
    protected $fillable = ['RoleId', 'DepartmentId', 'InternId', 'FirstName', 'LastName', 'Bio','api_token', 'email', 'LinkedIn', 'password', 'Address', 'Zip', 'City', 'ProfilePicture', 'BirthDate', 'StartDate', 'EndDate', 'Suspended','LinkedIn'];

    /**
     * Primarykey
     */
    protected $primaryKey = 'EmployeeId';

    /**
     * Deleted_at
     */
    protected $dates = ['deleted_at'];

    /**
     * @return mixed
     */
    public function role()
    {
        return $this->belongsTo(roleModel::class,'RoleId');
    }

    /**
     * @return mixed
     */
    public function intern($withTrashed = false)
    {
        if($withTrashed == true)
        {
            return $this->belongsTo(internModel::class, 'InternId')->withTrashed();
        }

        return $this->belongsTo(internModel::class,'InternId');
    }

    /**
     * @return mixed
     */
    public function department()
    {
        return $this->belongsTo(departmentModel::class,'DepartmentId');
    }

    /**
     * @return mixed
     */
    public function mentor()
    {
        return $this->belongsTo(mentorModel::class,'MentorId');
    }

    /**
     * @return mixed
     */
    public function employees()
    {
        return $this->hasManyThrough(employeeModel::class,departmentModel::class,'CompanyId','DepartmentId');
    }

    /**
     * @param $role
     * @return bool
     */
    public function hasRole($role)
    {
        if(strtolower($this->role->RoleName) == strtolower($role))
        {
            return true;
        }
        return false;
    }
}

您遇到的问题是,任何雄辩的关系对象实际上都是的实例Relation这意味着当您创建关系时,您实际上会返回一个集合(的实例为Builder);提示您的错误:

Builder.php第2148行中的BadMethodCallException:调用未定义的方法Illuminate \ Database \ Query \ Builder :: mentor()

在不对您的代码进行任何修改的情况下,简单的解决方案将是:

'MentorId'  => $employee->intern(true)->first()->mentor(true)->first()->MentorId;

但是,您可以使用如下所示的重载:

'MentorId'  => $employee->intern->mentor->MentorId;

虽然这将包括您的withTrashed但是,您可以将您的关系调整为类似以下内容:

public function intern($withTrashed = false)
{
    $relation = $this->belongsTo(internModel::class, 'InternId');

    if($withTrashed == true)
    {
        return $relation->withTrashed()->first();
    }

    return $relation->first();
}

但是我不建议这样做,因为以后如果您尝试使用类似WhereHas错误的东西,那将是错误的。也就是说,另一种方式是按照以下方式进行操作:

public function intern()
{
    return $this->belongsTo(internModel::class, 'InternId');
}

然后像这样被扔垃圾:

'MentorId' => $employee->intern()->withTrashed()->first()->mentor()->withTrashed()->first()->MentorId;

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Laravel将值传递给模型

来自分类Dev

Ruby on Rails:将值传递给模型

来自分类Dev

Ruby on Rails:将值传递给模型

来自分类Dev

将变量传递给 Laravel 模型启动

来自分类Dev

Laravel将旧的或值传递给模态

来自分类Dev

如何将ExternalLoginConfirmation Model值传递给提交的模型

来自分类Dev

使用php将值传递给Bootstrap模型

来自分类Dev

如何通过javascript将值传递给嵌套模型?

来自分类Dev

如何从View C#将值传递给模型的HashSet

来自分类Dev

尝试使用 Codeigniter 将值传递给模型

来自分类Dev

Laravel-将ajax变量传递给模型

来自分类Dev

将变量传递给模型

来自分类Dev

将模型传递给RouteValueCollection

来自分类Dev

将参数传递给模型?

来自分类Dev

将Laravel中的表单值传递给Blade模板

来自分类Dev

将动态值传递给Laravel max验证规则

来自分类Dev

Laravel-将多个值传递给Vue

来自分类Dev

Laravel通过路由将值传递给方法

来自分类Dev

将查询值传递给laravel中的邮件模板

来自分类Dev

在laravel下将输入值传递给javascript

来自分类Dev

将 javascript 循环值传递给 Laravel 控制器

来自分类Dev

将模型的实例值传递给 django 中的另一个不同的模型实例

来自分类Dev

将值传递给片段

来自分类Dev

将值传递给路线

来自分类Dev

将值传递给arraylist

来自分类Dev

将值传递给函数

来自分类Dev

将值传递给TimePickerFragment

来自分类Dev

将值传递给函数

来自分类Dev

将值传递给 FillRect