首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >未正确传递数据

未正确传递数据
EN

Stack Overflow用户
提问于 2019-04-12 19:50:00
回答 1查看 57关注 0票数 1

我有一个表格,看起来是这样的:

代码语言:javascript
复制
    @csrf

     <div class="row">
    @if ($errors->any())
        <div class="alert alert-danger mt-2" role="alert">
            <strong>{{ implode('', $errors->all(':message')) }}</strong>
        </div>
    @endif
 </div>

    <div class="form-group">
        <label for="projectTitle">Project title</label>
        <input type="text" class="form-control" name="proj_title" value="{{old('proj_title',$project->proj_title)}}">
    </div>
    <div class="form-group">
        <label for="projectDesc">Description</label>
        <textarea class="form-control" name="proj_desc" value="{{old('proj_desc',$project->proj_desc)}}"></textarea>
    </div>
    <div class="form-group">
        <label for="clientId">Client Id</label>
        <select name="client_id" class="form-control">

            <option>1</option>

        </select>
    </div>
    <div class="form-group">
        <button type="submit" class="btn btn-success">Create</button>
    </div>

如您所见,用户需要输入项目标题、项目描述和客户端id。然后我有一个索引页面,您可以在其中看到项目,如下所示

代码语言:javascript
复制
@extends('layouts.app')

@section('content')

@if (Auth::user()->role == 1)
    <a class="btn btn-secondary" href="/projects/create">Add Project</a>
@endif

<br><br>
<table class="table table-bordered table-hover">
    <thead>
        <tr>
            <th>Project Id</th>
            <th>Title</th>
            <th>Description</th>
            <th>Client Id</th>
            <th>Created by</th>
            <th>Created on</th>
        </tr>

    </thead>
    <tbody class="">
        @foreach ($project as $project)
        <tr>
            <td>{{$project->proj_id}}</td>
            <td>{{$project->proj_title}}</td>
            <td>{{$project->proj_desc}}</td>
            <td>{{$project->client_id}}</td>
            <td>{{$project->created_by}}</td>
            <td>{{$project->created_at}}</td>

        </tr>
        @endforeach
    </tbody>
</table>



@endsection    

我的意图是自动获取登录用户的名称,并将其放在"created“字段中,我编写的代码如下

代码语言:javascript
复制
public function store(Request $r)
{

    $validatedData = $r->validate([
       'proj_title' => 'required|max:100',
       'client_id' => 'required',
       'proj_desc' => 'required',
    ]);

    $currentUser = Auth::user()->name;

    $r['created_by'] = $currentUser;


   (new Project($r->all()))->save();
   return redirect('/projects')->with('store','');
}

我测试了返回$r数组,它在数组的正确索引中有正确的名称,但是我不知道为什么它没有到达数据库。

提前感谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-12 20:15:34

首先要做的是:

不要忘记用:正确地设置模型

代码语言:javascript
复制
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [

];

/**
* The attributes that should be hidden for arrays.
*
* @var string[]
*/
protected $hidden = [
];

您的created_by字段必须是User的外键,这样您就可以在迁移中做到这一点:

代码语言:javascript
复制
$table->integer('created_by');
$table->foreign('created_by')
      ->references('id')
      ->on('users')
      ->onDelete('cascade')
      ->onUpdate('cascade');

在您的Project模型中加入一个belongsTo关系:

代码语言:javascript
复制
/**
* Get the user that owns the phone.
*/
public function creator()
{
   return $this->belongsTo(User::class);
}

见: laravel.com/docs/5.8/eloquent-relationships#one-to-many

第二件

替换:

代码语言:javascript
复制
(new Project($r->all()))->save();

by:

代码语言:javascript
复制
$project = Project::create($r->all());

第二步

更改您的返回:

代码语言:javascript
复制
return redirect('/projects')->with('store','');

by:

代码语言:javascript
复制
return redirect('/projects')->with(['project' => $project]);

第三步

当您想检索项目的创建者时,请执行以下操作:

代码语言:javascript
复制
<tr>
   <th>Created by: {{ $project->creator->name }}</th>
</tr>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55658565

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档