当前位置: 首页 > 知识库问答 >
问题:

如何在Laravel 5.2中自动填充外键列值?

梁嘉澍
2023-03-14

我正在研究laravel 5.2,也是laravel的初学者。我在数据库中有用户客户表<客户表的code>user字段存储用户表的id列(主键)的值。i、 一个用户有多个客户端,一个客户端属于一个用户。现在来谈谈问题。当我要插入登录用户的新客户端时,我得到了一个错误。没有任何错误消息。我搜索并了解到,这可能是因为外键列名是user,而不是user\u id。所以我从return$this更新了我的客户机模型-

ClientController(尝试1)

$request->user()->clients()->create([
    'user' => $request->user()->id,
    'email' => $request->email,
    'age' => $request->age
]);

ClientController(尝试2)

$request->user()->clients()->create([
    'email' => $request->email,
    'age' => $request->age
]);

客户模型

namespace App;

use Illuminate\Database\Eloquent\Model;
use App\Ak\Scopes\AgeScope;

class Client extends Model
{
    protected static function boot()
    {
        parent::boot();
        static::addGlobalScope(new AgeScope);
    }

    public function user()
    {
        return $this->belongsTo('App\User', 'user');
    }

}

用户模型

namespace App;
use Illuminate\Foundation\Auth\User as Authenticatable;

class User extends Authenticatable
{
    protected $fillable = [
        'name', 'email', 'password', 'country'
    ];

    protected $hidden = [
        'password', 'remember_token',
    ];

    protected  $date = ['deleted_at'];

    public function client()
    {
        return $this->hasMany('App\Client', 'user');
    }
}

共有3个答案

朱锦
2023-03-14

问题解决了

问题解决了,因为我必须编写public$timestamps=false 处于客户端模式。之后,我不需要手动插入user值。因为laravel自己在做这个任务,就像我在用户和客户机模型关系中写外键一样。i、 e,返回$this-

我不明白我应该为laravel的这个功能做些什么。我该哭还是该笑?

狄高畅
2023-03-14

尝试添加protected$filleble=['email','age'] 到您的客户机模型。

更多关于大规模分配

编辑:试试这个

路线:

Route::post('user/{user}/client', 'YourController@store');

控制器:

public function store(Request $request, User, $user){
    $user->client()->create([
       'user' => $request->user()->id,
       'email' => $request->email,
       'age' => $request->age
    ]);
}

田永春
2023-03-14

对不起,你们的关系错了。而且你正在使用

 $request->user()->clients()

而不是

  $request->user()->client() 

你们关系中的客户是独一无二的。客户端功能体应该是

  return $this->hasMany('App\Client', 'user');

在您的客户机模型中添加

 $fillable = ['email', 'age', 'user'];

并将客户端模型中的用户函数更改为

public function user()
{
    return $this->belongsTo('App\User', 'user');
}

orm应该是这样的

$request->user()->client()->create([
   'user' => $request->user()->id,
   'email' => $request->email,
   'age' => $request->age
]);
 类似资料:
  • 问题内容: 我有一些PDF表单,我想用Django Web应用程序中的数据自动填充,然后提供给用户下载。哪个python库可以让我轻松地预填充PDF表单?这些表格旨在打印出来。 问题答案: 如果你要生成非常动态的PDF,并且需要以编程方式控制所有PDF(数据和布局),则Reportlab非常有用。 仅在现有的PDF中填写表格,reportlab是过大的,基本上,你将不得不在reportlab中从头

  • 问题内容: 我有下表,其中的表是空的,我正在尝试填充: 要填充的源数据是我从外部CSV文件填充的临时表: 我想做的是用中的值填充。该字段可以直接复制,但是我不太确定如何获取正确的内容(可以使用tmp_table.langname确定language.id)和(tmp_table.tplname,tmp_table.source,tmp_table.domain一起使用)确定template.id)

  • 问题内容: 就像是有什么,但对?我要显示的数据是使用的关联。 我已经尝试使用过,但是在这种情况下,我必须在hibernate状态下使用它,这需要我指定using,并且每当我检索到through时,列表中的元素之间都会有空格,具体取决于。 我需要自动填充集合,因为我需要在创建时动态生成。当我使用plain时,得到以下内容: 还有其他解决方案吗? 编辑 我正在尝试实现动态表格 问题答案: 您无法在MV

  • 并希望按列表中的值更改行C1-C3。预期产出:

  • 在SpringMVC项目的控制器中,我确实有一个列表,我将其放在模型映射中,如下所示。 现在我想在thymeleaf视图中使用post方法动态填充它。为此,我使用了一个JavaScript脚本。这不是所有的html代码,但为了简单起见,我只添加了JS部分。 这是测试有效的后方法。 它向我显示了错误:错误解析模板[],模板可能不存在或任何已配置的模板解析程序都无法访问,这肯定是因为:。有没有办法动态

  • 我有一个片段,我想创建一个自定义列表视图,但当我发送参数到适配器,它给我的错误。 这是我的代码片段.. 这是我的Mainhome.java 我的错误是...