Как выбрать один октябрьский ряд cms - PullRequest
0 голосов
/ 15 октября 2019

Как выбрать одну строку в cms за октябрь?

Как простая вещь может быть настолько сложной здесь?

Я думал, что это будет чем-то, что поможет нам, а не потревожит что-то, чтоэто так же просто, как

SELECT * FROM `engegraph_forms_membros` 

Здесь это похоже на борьбу с демонами без Библии, о боже, почему? Зачем усложнять запрос для новичка?

Ответы [ 2 ]

0 голосов
/ 15 октября 2019

Я понимаю, что вы не говорите по-английски, но вы должны смотреть каждое из этих видео .

. Запись относится к модели в плагине? Вот документы о том, как работать с моделями .

. Вы создаете плагин, устанавливаете базу данных, которая создает модели, а затем создаете компоненты для запуска на страницах CMS.

В файле component.php у вас может быть что-то вроде этого: Здесь я называю класс моделей Соглашения с use Author\Plugin\Models\Agreements;. Это позволяет мне запускать функцию / метод для извлечения всех соглашений или одного из них, используя службы красноречивого сбора данных laravel.

Допустим, у нас есть идентификатор записи. Ну, мы можем либо вызвать модель Соглашений с ::find или с ::where. Вы заметите, что у меня есть две функции, которые по сути делают одно и то же. ::find использует первичный ключ моделей (в моем случае идентификатор) и возвращает единственную запись. * Обратите внимание, что find может взять массив и вернуть коллекцию записей;как ::where. Используя ::where, мы будем искать идентификатор. * Примечание ::where всегда возвращает коллекцию, поэтому я включил ->first().

<?php namespace Author\Plugin\Components;

use Session;
use Input;
use Crypt;
use Db;
use Redirect;
use Illuminate\Contracts\Encryption\DecryptException;
use October\Rain\Support\Collection;

use Author\Plugin\Models\Agreements;

class GetAgreement extends \Cms\Classes\ComponentBase
{
    public function componentDetails()
    {
        return [
            'name' => 'Get one agreement',
            'description' => 'Get an agreement to change or delete it'
        ];
    }

    public function onRun() {
        $this->page['agreement'] = $this->getWithFindAgreement;
    }

    public function getWithFindAgreement() {
        $id = 1;
        $agreement = Agreements::find($id);
        return $agreement;
    }

    public function getWithWhereAgreement() {
        $id = 1;
        $agreement = Agreements::where($id)->first();
        return $agreement;
    }
}

Если по какой-то причине вы не работаете с моделями, вот документы по работе с базами данных . Вам нужно будет зарегистрировать фасад use Db;.

Здесь назовите нужную таблицу и используйте ::where, чтобы запросить ее. * Обратите внимание на использование ->first() снова.

$users = Db::table('users')->get();
$user = $users->where('id', 1)->first();
0 голосов
/ 15 октября 2019

Есть два простых способа выбрать одну строку:

Это даст вам первую запись в выбранном наборе записей.

SELECT top 1 * FROM `engegraph_forms_membros` 

Это выберет все записи, которыевыполнить предикатное требование, чтобы значение было равно

 SELECT * FROM `engegraph_forms_membros` where <columnname>=<value>

Если вы выберете запись, в которой несколько значений удовлетворяют этому требованию, то вы можете (случайным образом) выбрать одно, комбинируя решения...

 SELECT top 1 * FROM `engegraph_forms_membros` where <columnname>=<value>

Но имейте в виду, что без условия ORDER BY базовые данные неупорядочены и подвержены бесконтрольному изменению, поэтому большинство людей (включая вашего босса) будутпосчитать использование «Top» неподходящим для реального использования.

...