寻找在模型和数组之间建立关系的想法
如果我在像这个例子这样的函数中运行helper中的数组:
PHP
function color(){
$array = ['Black','Red','Orange','Yellow','Green','Blue'];
return $array;
}
并在我的数据库中有一个表返回上面数组的值的键
public function up()
{
Schema::create('color', function (Blueprint $table) {
$table->tinyIncrements('id');
$table->tinyInteger('color_number');
$table->timestamps();
});
}
控制器
public function viewAjax(Request $request)
{
if($request->ajax()){
$id = $request->id;
$info = Color::find($id);
return response()->json($info);
}
}
查看输出时我使用if jquery中的语句作为ajax请求
视图
<label> user color: </label><span id="view_user_color"></span>
<script type="text/javascript">
function fun_view_color(id)
{
var view_url = $("#hidden_view_color").val();
$.ajax({
url: view_url,
type:"GET",
data: {"id":id},
success: function(result){
function typeColor() {
if (color === 0) {
$("#view_user_color").text("Black");
} elseif(color === 1) {
$("#view_user_color").text("Red");
}elseif(color === 2) {
$("#view_user_color").text("Orange");
}elseif(color === 3) {
$("#view_user_color").text("Yellow");
}elseif(color === 4) {
$("#view_user_color").text("Green");
}elseif(color === 5) {
$("#view_user_color").text("Blue");
}
}
}
});
}
使用if语句这么糟糕并且使代码太长
我正在寻找能够做到这一点的击球方式
我知道还有另一种方法可以让表格包含颜色并用外键引用
但这不是我的目标,我需要使用数组
答案 0 :(得分:1)
首先,一个笑话:Model和Array之间的关系是什么?这太复杂了。
感谢。
现在,您可以使用查找数组作为帮助程序(我将其重命名为colorMap()
)。考虑一下:
<?php
function colorMap() {
// The keys match the color IDs you store in the database
$array = [
'0' => 'Black',
'1' => 'Red',
'2' => 'Orange',
'3' => 'Yellow',
'4' => 'Green',
'5' => 'Blue'
];
return $array;
}
<?php
public function viewAjax(Request $request) {
if ($request->ajax()) {
$id = $request->id;
$info = Color::find($id);
// Pass an array containint the Color Model and the color map
return response()->json([
'color' => $info,
'colorMap' => colorMap()
]);
}
}
和JS:
<script type="text/javascript">
function fun_view_color(id) {
var view_url = $("#hidden_view_color").val();
$.ajax({
url: view_url,
type:"GET",
data: {"id":id},
success: function(result) {
setColorName(result);
}
});
}
function setColorName(result) {
var colorId = result.info.id; // Passed from controller
var colorName = result.colorMap[colorId]; // Passed from controller
$("#view_user_color").text(colorName);
}
</script>
注意:
答案 1 :(得分:1)
public function viewAjax(Request $request)
{
//include the helper function
$colors = color(); //array of colors
if($request->ajax()) {
$id = $request->id;
$info = Color::find($id);
$info->color = $colors[$info->color_number];
return response()->json($info);
}
} 并在视图中
<label> user color: </label><span id="view_tower_color"></span>
<script type="text/javascript">
function fun_view_color(id)
{
var view_url = $("#hidden_view_color").val();
$.ajax({
url: view_url,
type:"GET",
data: {"id":id},
success: function(result){
$("#view_user_color").text(result.color);
}
});
}
</script>