【问题标题】:Laravel Table Relation One to Many not work using InfyOm GeneratorLaravel 表关系一对多不能使用 InfyOm 生成器
【发布时间】:2019-08-09 10:06:38
【问题描述】:

我使用名为 infyom lab 的生成器(它对我来说是新的)在 laravel 上工作。我对这个生成器有了新的体验,但出现了一个错误。它说“试图获取非对象的属性'名称'”。我习惯于在没有生成器的情况下手动完成所有操作并且做得很好。希望有所帮助

用户控制器.php

public function index(Request $request) {
$users = $this->userRepository->all();
return view('users.index')
->with('users', $users);
}

用户存储库

<?php
namespace App\Repositories;
use App\Models\User;
use App\Repositories\BaseRepository;
/**
* Class UserRepository
* @package App\Repositories
* @version August 7, 2019, 5:11 pm UTC
*/
class UserRepository extends BaseRepository
{
/**
 * @var array
 */
protected $fieldSearchable = [
    'name',
    'email',
    'telephone',
    'username',
    'password',
    'company_id'
];
/**
 * Return searchable fields
 *
 * @return array
 */
public function getFieldsSearchable()
{
    return $this->fieldSearchable;
}
/**
 * Configure the Model
 **/
public function model()
{
    return User::class;
}
}

模型用户

public function company(){
return $this->belongsTo('App\Company');
}

示范公司

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

查看用户

<td>{{ $user->company->name }}</td>

【问题讨论】:

  • 您的控制器中如何定义$this-&gt;userRepository?此外,除非您确实需要原始输入,否则应避免使用 {!! !!} 并改用 {{ }}。非对象的属性表明 $user-&gt;company 评估为 null
  • $this-&gt;userRepository 来自名为 infyom 的生成器,{!! !!} 也来自生成器,它工作正常。问题是,为什么它说 null?
  • {!! !!} 不会转义输入。 {{ }} 确实如此。它将&amp;lt;&amp;gt; 符号转换为&amp;lt;&amp;gt;。它说null,因为User 没有与任何Company 关联($user-&gt;company_id 要么是null,要么不是有效的Company id)
  • 好的,我解决了{!! !!} 的问题,顺便说一句,这是我的标题,我错过了什么吗?
  • 你试过dd($user);dd($user-&gt;company); 看看它是否对公司有价值?或dd($user-&gt;company());

标签: laravel


【解决方案1】:

此问题的解决方案是在模型文件夹app\Models 中的Model 中写入关系hasManybelongsTo,而不是app\

【讨论】:

  • Laravel 直接在app 文件夹中有一个 User 模型,而 InfyOm Laravel Generator 在app/Models 目录下生成模型。因为在大型项目中,这是组织所有模型的更好方法。您可以从配置文件中配置它。所以只要检查一下,我认为你应该准备好了。如果这会产生错误,则要么将用户模型移动到 app/Models,要么只是更改配置文件中的配置以将模型直接生成到 app 文件夹中。
猜你喜欢
  • 2021-10-12
  • 2017-04-28
  • 2018-08-11
  • 2018-10-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-23
  • 2018-06-15
相关资源
最近更新 更多