laravel принадлежит для модели пользователя не работает

Ниже приведены мои отношения в Laravel, я не могу войти в компанию, используя Объект пользователя, но я получаю ноль когда я пытаюсь получить к нему доступ, пожалуйста, смотрите мой код ниже, чтобы получить картину

Ниже приведены мои модели

<?php

namespace App\Models;

use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Zizaco\Entrust\Traits\EntrustUserTrait;
use Session;
use Illuminate\Support\Facades\DB;

class User extends Authenticatable
{
use Notifiable;
use EntrustUserTrait;

protected $table = 'tbl_users';
protected $primaryKey = 'id';
protected $guarded = ['id'];
const API = 'api';
const WEB = 'web';

/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'name', 'email', 'password', 'last_login', 'Address', 'Age', 'DateOfBirth', 'created_by', 'deleted_by'
];

/**
* The attributes that should be hidden for arrays.
*
* @var array
*/
protected $hidden = [
'password', 'remember_token',
];

protected $casts = [
'is_admin' => 'boolean',
];

public function isAdmin()
{
return $this->is_admin;
}

static function GetUserNamebyID($id)
{
$name = User::select("name")->where(["id" => $id])->pluck('name');
if (isset($name[0])) {
return $name[0];
} else {
return '';
}
}public function loginlogout()
{
$this->hasMany("App\Models\LoginLogoutLogs", 'userID');
}

public function company()
{
$this->hasMany("App\Models\Company", "company_id");
}
}

И следующая модель моей компании

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;
use DB;
use App\Models\CarePlanData;
use Session;

class Company extends Model
{
protected $table = 'companies';
protected $primaryKey = 'id';
protected $guarded = ['id'];

/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'name', 'phone_no', 'address', 'password', 'description', 'city', 'company_logo', 'country', 'email'
];

static public function fetchAllActiveCompanies()
{

return DB::table("companies")->where(['is_active' => 1])->pluck('name', 'id');
}

// change company to hasmany

public function users()
{
return $this->hasmany('App\Models\User');
}

}

и вот как я пытаюсь получить доступ к компании, но я получаю ноль.

public function fetchCompany(){
$User = User::find($user->id);
dd($User->company());
}

0

Решение

в первую очередь вы делаете

public function fetchCompany(){
$User = User::find($user->id);
dd($User->company());
}

но это должно быть

   public function fetchCompany(){
$User = User::find($user->id);
dd($User->company()->get());
}

или же

 public function fetchCompany(){
$User = User::find($user->id);
dd($User->company);
}

Пожалуйста, также проверьте User::find($user->id) дает вам объект или нет. Если нет, то вы не можете получить компанию не объект

1

Другие решения

Прежде всего, если пользователь принадлежит 1 компании, это должно быть:

public function company()
{
$this->belongsTo("App\Models\Company", "company_id");
}

затем fetchCompany() должно быть

public function fetchCompany(){
$User = User::with('company')->find($user->id);
dd($User->company);
}

Вам нужно использовать with загрузить отношения. Вы передаете имя функции, которая определяет отношение в вашем User модель для with как это with('function_name'),

1

на самом деле, если ваш company_id поле находится на модели пользователя, то ваше отношение должно быть

public function company()
{
$this->belongsTo("App\Models\Company", "company_id");
}

разве у пользователя может быть много компаний?

0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector