【问题标题】:how we can insert the data from one table to another table with foreign key in laravel?我们如何在 laravel 中使用外键将数据从一个表插入到另一个表中?
【发布时间】:2018-07-20 15:33:01
【问题描述】:

假设我有一张桌子(“附件”),另一张是桌子(“品牌”)。 我想从品牌表中附加一个brand_logo,它将保存到表中(“附件”)。我是初学者,提前抱歉。 请帮我。\ 这是我的品牌控制器.......

 public function create()
{
    $brands = Brand::all();
    $catagories = Catagory::all();
    $attachments = Attachment::all();
    return view('system-mgmt/brand/create', ['brands' => $brands, 'catagories' => $catagories,'attachments'=>  $attachments]);

}

/**
 * Store a newly created resource in storage.
 *
 * @param  \Illuminate\Http\Request  $request
 * @return \Illuminate\Http\Response
 */
public function store(Request $request)
{
    Catagory::findOrFail($request['catID']);
    Attachment::findOrFail($request['attachmentID']);
    $this->validateInput($request);
     Brand::create([
        'brandsName' => $request['brandsName'],
        'attachmentID' => $request['attachmentID'],
        'catID' => $request['catID']
    ]);

    return redirect()->intended('system-management/brand');
}

这是我的 html 代码,此代码是从附件表中获取数据...但我的要求是“数据将由用户插入”

 <div class="form-group">
                        <label class="col-md-4 control-label">Brand Logo</label>
                        <div class="col-md-6">
                            <select class="form-control" name="attachmentID">
                                @foreach ($attachments as $attachment)
                                    <option value="{{$attachment->id}}">{{$attachment->attachmentName}}</option>
                                @endforeach
                            </select>
                        </div>
                    </div>

【问题讨论】:

  • 到目前为止你有没有尝试过?可以加代码帮忙吗
  • 你需要浏览 Laravel 文档:laravel.com/docs/5.6/eloquent 为品牌创建条目,获取行的 ID,使用它来创建附件条目。
  • 怎么样??请举个例子

标签: php css laravel eloquent


【解决方案1】:

您希望将数据从一个表插入到另一个关系表不是最佳做法。
在这里您可以在选择数据时使用join查询并避免插入过程更好。

brands 表与attachments 表加入并在foreign key 之后访问brand_logo

//Please make sure your table and field name is correct   
$attachments = DB::table('attachments')
                ->leftJoin('brands', 'attachments.id', '=', 'brands.attachmentID')
                ->select('attachments.*','brands.brand_logo')
                ->first();

echo $attachments->brand_logo;

不过,为了这个目的,您可以在某些时候将表数据复制到其他表。

//Laravel DB raw insert query
\DB::insert("INSERT INTO table_a(fld_a,fld_b)
    SELECT
        fld_a,fld_b // Make sure select column same sequence of insert field name(fld_a,fld_b).
    FROM
        table_b
    WHERE table_b.id > 100  //condition
        ");

详情here.

【讨论】:

  • 'attachmentID' => $request['attachmentID'],我想通过外键插入数据(''brandlogo')???
  • 嗨,@NasirSubhan 我根据您的评论更新了我的答案。也许它可以帮助您解决问题。谢谢
猜你喜欢
  • 1970-01-01
  • 2021-05-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-18
  • 2023-03-29
  • 2014-10-15
  • 1970-01-01
相关资源
最近更新 更多