模型和数组有啥关系?情况很复杂
Posted
技术标签:
【中文标题】模型和数组有啥关系?情况很复杂【英文标题】:What's the relationship between Model and Array? It's complicated模型和数组有什么关系?情况很复杂 【发布时间】:2017-11-19 07:40:43 【问题描述】:寻找在模型和数组之间建立关系的想法
如果我在帮助程序中有一个数组,可以在像这个例子这样的函数中运行:
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);
查看输出时我在 jquery 中使用 if 语句作为 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 语句太糟糕了,代码太长了
我正在寻找击球手的方法来做到这一点
我知道还有另一种方法是让表格包含颜色并由外键引用
但这不是我的目标,我需要使用数组
【问题讨论】:
您是否需要服务器端的color()
帮助程序,或者将其移至 Javascript 是否可以?
两种方式都会帮助我
【参考方案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>
注意事项:
代码未使用任何验证,您应该提供验证 这种方法有一个重大缺陷:如果颜色 ID 会改变,您将 需要在硬编码的任何地方进行更改。 您确实应该重新考虑将颜色放入表格中。【讨论】:
【参考方案2】: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>
【讨论】:
它的工作text(result.color)
但text(result.data.color)
没有工作
编辑答案以从 result.data.color 中删除数据以获得 result.color。很高兴它正在工作。以上是关于模型和数组有啥关系?情况很复杂的主要内容,如果未能解决你的问题,请参考以下文章