所以,我对从我在拉拉维尔的数据库中获取一些信息有一些问题。问题是,我想要一个站点设置表,带有一些全局默认值。
+--------------+--------------+------+-----+---------+----------------+
| 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 | |
+--------------+--------------+------+-----+---------+----------------+像这样..。我如何获得所有的信息与拉拉维雄辩?
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()并转换为一个(对象)的答案,以获得我正在寻找的结果。
$option>site_name
发布于 2018-12-13 08:12:55
在App/Http/Controller/Controller.php中
class Controller extends BaseController
{
use AuthorizesRequests, DispatchesJobs, ValidatesRequests;
protected $options;
public function __construct()
{
$this->options = (object)DNBOptions::pluck('option_value', 'option_name')->toArray();
\View::share('options', $this->options);
}
}意见:
{{ $options->site_name }}在管制员中:
$this->options->site_name发布于 2018-12-13 07:52:18
首先创建模型。您可以手动完成,也可以在终端中使用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文档。
发布于 2018-12-13 07:45:59
雄辩的质疑:
$options = DB::table('options')->get();使用以下代码获取所有信息:
@foreach($options as $option)
{{ $option->site_name }}
{{ $option->option_value }}
@endforeachhttps://stackoverflow.com/questions/53757074
复制相似问题