簡體   English   中英

Laravel 5.7雄辯

[英]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

鏈接到Laracast

首先創建模型。 您可以手動執行此操作,也可以在終端中與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

在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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM