【问题标题】:How to assign author ID and Paper ID to relations table?如何将作者 ID 和论文 ID 分配给关系表?
【发布时间】:2022-11-30 18:14:04
【问题描述】:

我的项目遇到了问题,因为您知道一个作者可以有多篇论文,而一篇论文可以有多个作者。因为是多对多的关系,所以我设计了我的数据库

我对如何输入标题然后输入作者并将它们关联起来以进行显示和引用感到困惑 你们有什么想法吗?我正在使用 Laravel 9 来制作这个项目

这是我做的源代码 创建论文标题然后路由回索引

@extends('layouts.layout')

@section('content')
<form action="{{ route('papers.store') }}" method="POST">
    @csrf
  
     <div class="row">
        <div class="col-xs-12 col-sm-12 col-md-12">
            <div class="form-group">
                <strong>Title:</strong>
                <input type="text" name="title" class="form-control" placeholder="Title">
            </div>
        </div>
        <div class="col-xs-12 col-sm-12 col-md-12 text-center">
                <button type="submit" class="btn btn-primary">Submit</button>
        </div>
    </div>
   
</form>

@endsection

论文控制器

public function store(Request $request)
    {
        $paper = new Papers();

        $paper->title = $request->title;

        $paper->save();

        return redirect()->route('papers.index');
    }

索引刀片

@extends('layouts.layout')

@section('content')
<div class="row">
        <div class="col-lg-12 margin-tb">
            <div class="pull-left">
                <h2>Debugging</h2>
            </div>
            <div class="pull-right">
                <a class="btn btn-success" href="{{ route('papers.create') }}"> Create New Paper</a>
            </div>
            
            
        </div>
    </div>


@foreach($paper as $papers)

{{$papers->title}}

<div class="pull-right">
                <a class="btn btn-success" href="{{ route('AddAuthor',$papers->PaperID) }}"> Add Author(s)</a>
            </div>

@endforeach

@endsection

作者刀片

@extends('layouts.layout')

@section('content')
<form action="{{ route('authors.store') }}" method="POST">
    @csrf
  
     <div class="row">
        <div class="col-xs-12 col-sm-12 col-md-12">
            <div class="form-group">
                <strong>First Name:</strong>
                <input type="text" name="Fname" class="form-control" placeholder="First Name">
            </div>
            <div class="form-group">
                <strong>Last Name:</strong>
                <input type="text" name="Lname" class="form-control" placeholder="Last Name">
            </div>
        </div>
        <div class="col-xs-12 col-sm-12 col-md-12 text-center">
                <button type="submit" class="btn btn-primary">Submit</button>
        </div>
    </div>
   
</form>

@endsection

作者控制器

 public function store(Request $request)
    {
        $relate = DB::table('papers')
            ->where('PaperID', '=', $request->paper_ID)
            ->value('PaperID');

        $author = new Authors();
        $relations = new Relate();

        $author->Fname = $request->Fname;
        $author->Lname = $request->Lname;

        $relations->paper_ID = $relate;

        $author->save();
        $relations->save();
        return redirect()->back();
    }

【问题讨论】:

  • 请与我们分享到目前为止的尝试。如果您不重命名 'id' 列,您也可以更轻松地进行关系分配。我强烈建议您重构表 papers 并将 PaperID 重命名为 id
  • 当您在项目中使用 Laravel 9 时,请查看 Many to Many relationship 的介绍,如果您还没有尝试过。如果您尝试了某事但在某处失败了,请分享代码并解释什么不起作用。
  • 所以我尝试的是用户首先输入标题然后被重定向回索引页面在那里他们可以添加作者并被路由到作者创建页面这就是我遇到的问题我将编辑问题以便人们可以看到代码
  • 也请贴出两个模型的相关关系定义

标签: php laravel forms


【解决方案1】:

我建议你看看官方文档:https://laravel.com/docs/9.x/eloquent-relationships 解释了如何建立模型之间的关系。

一旦你在模型中定义了关系,你就可以轻松地保存关系,甚至不必关心 paper_id(它将由 Eloquent 为你处理)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-12
    • 2021-10-20
    • 2012-05-05
    • 2011-07-14
    • 1970-01-01
    • 2021-10-20
    • 2012-11-26
    相关资源
    最近更新 更多