PHP,Laravel-为以下数据构造代码
我有两张桌子PHP,Laravel-为以下数据构造代码,php,laravel,laravel-5,laravel-5.3,Php,Laravel,Laravel 5,Laravel 5.3,我有两张桌子 问题带有列id(PK),名称 及 答案带有列id(PK),问题id(FK),答案,答案2,答案3,答案4 我得到的数据是,每个问题都有多个答案 通过Laravel将其插入DB的最佳方式是什么 我试过了,但没有成功。你应该了解拉威尔的关系: 在您的情况下,这将是一对多关系(一个问题-多个答案) 您应该了解Laravel关系: 在您的情况下,这将是一对多关系(一个问题-多个答案) 下面是一个示例:请注意,实际上没有测试任何代码块 数据库结构: 问题:id、姓名(一个问题有很多答案
问题
带有列id(PK)
,名称
及
答案
带有列
id(PK)
,问题id(FK)
,答案代码>,答案2
,答案3
,答案4
我得到的数据是,每个问题都有多个答案
通过Laravel将其插入DB
的最佳方式是什么
我试过了,但没有成功。你应该了解拉威尔的关系:
在您的情况下,这将是一对多关系(一个问题-多个答案) 您应该了解Laravel关系:
在您的情况下,这将是一对多关系(一个问题-多个答案) 下面是一个示例:请注意,实际上没有测试任何代码块
数据库结构:
问题:id、姓名(一个问题有很多答案)
答案:id、问题id、姓名(答案属于问题)
我已经编写了2个模型文件和一个Http控制器文件:
问题模型:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Question Extends Model
{
// Relation
public function answers()
{
return $this->hasMany(Answer::class);
}
}
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Answer Extends Model
{
// Relation
public function question()
{
return $this->belongsTo(Question::class);
}
}
| answer_id | question_id |
| --------- | ----------- |
| 1 | 2 |
对于可以更改请求参数的人员,更好的方法是:
如果可以,请更改请求,如下所示:
{
"questions": [
{
"name": "What ever",
"answers": [
{"name": "answer 1 of this question"},
{"name": "answer 2 of this question"}
]
},
{
"name": "What ever 2",
"answers": [
{"name": "answer 1 of this question"},
{"name": "answer 2 of this question"}
]
}
]
}
这将对以后解析它们有很大帮助
<?php
namespace App\Http\Controllers;
use App\Question;
use Illuminate\Http\Request;
class AlternateQuestionsController Extends Controller
{
public function store(Request $request)
{
foreach($request->input("questions", []) as $questionPayload) {
$question = Question::create(["name" => $questionPayload["name"]);
foreach($questionPayload["answers"] as $answerPayload) {
if(is_array($answerPayload)) {
$question->answers()->create(["name" => $answerPayload["name"]])
}
}
}
}
}
以下是一个示例:请注意,实际上没有测试任何代码块
数据库结构:
问题:id、姓名(一个问题有很多答案)
答案:id、问题id、姓名(答案属于问题)
我已经编写了2个模型文件和一个Http控制器文件:
问题模型:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Question Extends Model
{
// Relation
public function answers()
{
return $this->hasMany(Answer::class);
}
}
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Answer Extends Model
{
// Relation
public function question()
{
return $this->belongsTo(Question::class);
}
}
| answer_id | question_id |
| --------- | ----------- |
| 1 | 2 |
对于可以更改请求参数的人员,更好的方法是:
如果可以,请更改请求,如下所示:
{
"questions": [
{
"name": "What ever",
"answers": [
{"name": "answer 1 of this question"},
{"name": "answer 2 of this question"}
]
},
{
"name": "What ever 2",
"answers": [
{"name": "answer 1 of this question"},
{"name": "answer 2 of this question"}
]
}
]
}
这将对以后解析它们有很大帮助
<?php
namespace App\Http\Controllers;
use App\Question;
use Illuminate\Http\Request;
class AlternateQuestionsController Extends Controller
{
public function store(Request $request)
{
foreach($request->input("questions", []) as $questionPayload) {
$question = Question::create(["name" => $questionPayload["name"]);
foreach($questionPayload["answers"] as $answerPayload) {
if(is_array($answerPayload)) {
$question->answers()->create(["name" => $answerPayload["name"]])
}
}
}
}
}
我建议一种可能对您有所帮助的方法。您可以创建一个中间表,用于保持问题和答案模型之间的关系
问题\答案:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Question Extends Model
{
// Relation
public function answers()
{
return $this->hasMany(Answer::class);
}
}
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Answer Extends Model
{
// Relation
public function question()
{
return $this->belongsTo(Question::class);
}
}
| answer_id | question_id |
| --------- | ----------- |
| 1 | 2 |
并检索以下问题的答案:
Question::find($questionId)->answer()->get();
or
Question::find($questionId)->answer;
在您的问题中模型添加此方法:
public function answer()
{
return $this->belongsToMany('App\Answer','question_answer','answer_id ','question_id ');
}
如果你看看这一页,你会了解更多
我建议一种可能对你有帮助的方法。您可以创建一个中间表,用于保持问题和答案模型之间的关系
问题\答案:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Question Extends Model
{
// Relation
public function answers()
{
return $this->hasMany(Answer::class);
}
}
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Answer Extends Model
{
// Relation
public function question()
{
return $this->belongsTo(Question::class);
}
}
| answer_id | question_id |
| --------- | ----------- |
| 1 | 2 |
并检索以下问题的答案:
Question::find($questionId)->answer()->get();
or
Question::find($questionId)->answer;
在您的问题中模型添加此方法:
public function answer()
{
return $this->belongsToMany('App\Answer','question_answer','answer_id ','question_id ');
}
如果你看看这一页,你会了解更多
有代码块吗?@HilmiErdemKEREN错误的代码块匹配。。。我正在写入和删除代码:(有代码块吗?@HilmiErdemKEREN坏代码块伙伴…我正在编写和删除代码:(如何?我如何使用关系?您需要先阅读有关雄辩的内容。我不是按照您的方式。您需要保存问题,然后使用他们的模型类逐个回答。如何?我如何使用关系?您需要先阅读有关雄辩的内容。我不是按照您的方式。您需要保存问题,然后逐个回答。如何使用关系?您需要阅读有关雄辩的内容。我不是按照您的方式。您需要保存问题,然后逐一回答。)使用他们的模型类。Mate请求不能更改,这是需要的。是否仍有更改您的foreach()
?当然有。我也会添加它。请再次检查答案。Mate请求不能更改,这是需要的。是否仍有更改您的foreach()的方法
?当然有。我也会添加它。请再次检查答案。