【问题标题】:How do i get the primary key of a form value from the database in Laravel如何从 Laravel 的数据库中获取表单值的主键
【发布时间】:2017-01-29 00:01:30
【问题描述】:

Laravel 5.3

我有 3 个表格 [Form] - [Code_F] 和 [Code_R],我在前端有一个表格,要求用户输入 'name'、'email'、'mobile'、'age' , 'code_f', 'code_r',我需要能够在表单表中添加'code_f'和'code_r'的主键,而不是用户提交的代码。

我不希望有一个选择框供用户选择代码,但我希望他们编写他们拥有的代码,然后我想将它们保存到 code_f 和 code_r 下的表格 FORM 中,并使用它们各自的主键而不是完整的价值。

型号

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Form extends Model {

    protected $table = 'form';
    public $timestamps = true;
    protected $fillable = array('name', 'email', 'mobile', 'age', 'code_f', 'code_r');

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

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

控制器

    $form = new Form;
    $form->name = $request->name;
    $form->email = $request->email;
    $form->mobile = $request->mobile;
    $form->code_f = $request->code_f;
    $form->code_r = $request->code_r;
    $form->save();

表格表格

id、姓名、电子邮件、手机、年龄、code_f、code_r

表格代码_F

id,代码

表格代码_R

id,代码

更新:代码已经存储在表 Code_F 和 Code_R 中,它们都是数字

【问题讨论】:

    标签: laravel laravel-5.3


    【解决方案1】:

    如果您在请求中传递 Code_f 和 Code_r 的 id。然后您应该能够像这样从数据库中检索它,请记住,您已经知道密钥名称(在本例中为 id

    $code_f = Code_F::find($request->code_f);
    $code_r = Code_F::find($request->code_r);
    

    您可以在保存代码中访问模型。如$code_f-&gt;id | $code_r-&gt;id

    更新

    我再次阅读了您的问题,指出您在请求中传递了codes,并且您想要检索相关的id。所以,这里是演习

    $code_f = Code_F::where('code', $request->code_f)->first(); // will get you the 1st record if there are more than one
    $code_r = Code_R::where('code', $request->code_r)->first();
    

    【讨论】:

    • 它就像一个魅力,我跟着这个并添加了$form-&gt;code_f = $code_f-&gt;id;来获取ID并能够正确保存它
    【解决方案2】:

    首先,将您的方法 Code_FCode_R 从您的 Form 类更新为这些:

    public function Code_F()
    {
       return $this->belongsTo('App\Code_F', 'code_f');
    }
    
    public function Code_R()
    {
       return $this->belongsTo('App\Code_R', 'code_r');
    }
    

    其次,在您的控制器中,您必须为每个代码创建一个Code 实例:

    $form = new Form;
    $form->name = $request->name;
    $form->email = $request->email;
    $form->mobile = $request->mobile;
    $form->code_f = Code_F::create(['code' => $request->code_f])->id;
    $form->code_r = Code_R::create(['code' => $request->code_r])->id;
    $form->save();
    

    当您从数据库中检索Form 时,您可以通过以下方式获取Code_FCode_R

    $form = Form::findOrFail(1);
    $codeFId = $form->Code_F->id;
    $codeRId = $form->Code_R->id;
    

    【讨论】:

    • 我接受了另一个答案,因为在我的情况和你的情况下,实际上在“Code_R”和“Code_F”表单中创建了一个新 ID,而不是获取相关 ID,但你肯定帮助我理解了它通过该检索方法进一步
    • 没问题@NMindz,很高兴我帮助你更好地了解了你的情况:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-06
    • 2015-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多