php - Laravel 5.7 雄辩
问题描述
所以,我在从 Laravel 的数据库中获取一些信息时遇到了一些问题。问题是,我想要一个站点设置表,其中包含一些全局默认值。
+--------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| option_name | varchar(255) | NO | | NULL | |
| option_value | longtext | NO | | NULL | |
+--------------+--------------+------+-----+---------+----------------+
像这样..如何使用 Laravel Eloquent 获取所有信息?
select * from `options`;
> 1 | site_name | mysite.com
我希望能够做到
$options->site_name
在我的控制器和视图中。不记得这种东西叫什么,所以我真的找不到它.. :(
编辑:
请求后的模型类
namespace App;
use Illuminate\Database\Eloquent\Model;
class DNBOptions extends Model
{
protected $table = 'dnb_options';
protected $primaryKey = 'option_name';
protected $fillable = [
'option_name', 'option_value'
];
}
编辑2:
在 Laracast 上得到答案以使用 ->pluck() 并转换为 (object) 以获得我正在寻找的结果。
$option->site_name
解决方案
首先创建模型。您可以手动或artisan
在终端中执行此操作:
php artisan make:model Option
这将创建App\Option
类。然后在中配置模型app/Option.php
:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Option extends Model
{
//
protected $table = 'options';
}
现在在任何控制器中App\Http\Controllers\AnyController
都可以使用代码:
use App\Option;
// Other codes ...
public function show($id) {
$option = Option::find($id);
echo $option->option_name; // print "site_name"
}
OP 后编辑给新模型 -------------
因此,如果您使用模型:
namespace App;
use Illuminate\Database\Eloquent\Model;
class DNBOptions extends Model
{
protected $table = 'dnb_options';
protected $primaryKey = 'option_name';
protected $fillable = [
'option_name', 'option_value'
];
}
然后在控制器或视图中使用:
$option = \App\DNBOptions::find('site_name');
echo $option->option_value;
// Get all
$options = \App\DNBOptions::all();
foreach($options as $option) {
echo $option->option_name;
echo $option->option_value;
}
// Print 1st
echo $options->first()->option_name;
// With where
$option = \App\DNBOptions::where('option_name', 'site_name')->first();
echo $option->option_value;
一个完整的控制器 - 查看示例:
<?php
namespace App\Http\Controllers;
use App\DNBOptions;
class OptionController extends Controller
{
/**
* Show the application dashboard.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
$options = DNBOptions::all();
$data ['options'] => $options;
return view('options.index', $data);
}
}
视图类是resources/views/options/index.blade.php
:
@extends('layouts.app')
@foreach($options as $option)
{{ $option->site_name }}
{{ $option->option_value }}
@endforeach
@extends
如果您有布局模板,请使用。并查看 Laravel 文档以获取更多信息。
推荐阅读
- javascript - Chartjs 显示数字而不是时间
- php - 如何分解数组并插入 MySQL
- scala - 当将 snakeyaml 反序列化对象传递给 Gatling 馈线时,少量会导致 java.lang.ClassCastException
- c++ - 有没有办法在 GCC 中禁用内联汇编程序?
- spring - Spring Jpa 实体 - EntityManager.getReference
- sql - 在 Redshift/PostgreSQL 中使用 Last_Value 窗口函数
- python - 我如何获得一个程序来计算文件中每个员工的加薪?
- openstreetmap - 如何在立交桥中塑造国家(没有海上限制......只有地形)?
- python - 确定列表中大于阈值的项目的最有效方法是什么?
- symfony - 组 Symfony/Monolog 日志消息