[英]Laravel 5.7 Eloquent
因此,我在從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 | |
+--------------+--------------+------+-----+---------+----------------+
這樣。.我如何通過Laravels 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()並強制轉換為(對象)以獲得我想要的結果。
$選項 - > 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"
}
提供新模型后進行編輯-------------
因此,如果您使用模型:
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);
}
}
而且View類是resources/views/options/index.blade.php
:
@extends('layouts.app')
@foreach($options as $option)
{{ $option->site_name }}
{{ $option->option_value }}
@endforeach
如果您有布局模板,請使用@extends
。 並參閱Laravel文檔以獲取更多信息。
雄辯的查詢:
$options = DB::table('options')->get();
使用此代碼獲取所有信息:
@foreach($options as $option)
{{ $option->site_name }}
{{ $option->option_value }}
@endforeach
DNBOptions::where('option_value', 'mysite.com')->get();
在Controller中首先添加模型名稱空間:
use App\Option;
....
....
public function methodName($id) {
$data['options'] = Option::all();
return view('index',$data);
}
位於resources/views/
目錄中的resources/views/
名稱為index.blade.php
或在刀片中:
@foreach($options as $option)
{{ $option->site_name }}
{{ $option->option_value }}
@endforeach
在您的App / Http / Controllers / 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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.