Для того, чтобы они подают модели в Laravel 5.3?

Извините мое неведение. Я верю в модели следующего способа:

php artisan make:model Marcas -m

И модель оставила это таким, который создается:

namespace App;

use Illuminate\Database\Eloquent\Model;

class Marcas extends Model
{
    //
}

Я изменяю такие миграции:

use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateMarcasTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('marcas', function (Blueprint $table) {
            $table->increments('id');
            $table->string('nombre');
            $table->string('descripcion');
            $table->boolean('status');
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('marcas');
    }
}

Я манипулирую всеми функциями с драйвера, который я считаю это таким:

php artisan make:controller MarcasController --resource

И я это изменяю до того, чтобы оставаться таким:

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use App\Http\Requests;

use Illuminate\Contracts\Auth\Guard;
use Closure;
use Auth;
use Session;
use Redirect;
use DB;
use PDO;
use Validator;
use Response;
use Datatables;
use Debugbar;
use Alert;
use Illuminate\Support\Facades\Input;
use App\Marcas;

class MarcasController extends Controller
{
    protected $auth;
    public function __construct(Guard $auth){
        $this->auth = $auth;
        $this->middleware('auth');
        $this->middleware('ruta:Marcas');
        $this->middleware('funciones:Marcas,crear',['only'=>['crear']]);
        $this->middleware('funciones:Marcas,editar',['only'=>['editar']]);
        $this->middleware('funciones:Marcas,eliminar',['only'=>['eliminar']]);
        $this->middleware('funciones:Marcas,estado',['only'=>['estado']]);
    }
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index(){
        return view('marcas.index');
    }

    public function tabla(Request $request){
        try{
            $sql = Marcas::select(array('id', 'nombre', 'descripcion', 'status'));
            return Datatables::of($sql)
            ->addColumn('action', ' Editar  Eliminar')
            ->addColumn('estado', 'activo')
            ->filter(function ($query) use ($request) {
                if ($request->has('campo')) {
                    $query->where(DB::raw("CONCAT( nombre, ' ', descripcion )"), 'ilike', "%{$request->get('campo')}%");
                }
                if ($request->has('status')) {
                    $query->where('status', '=', "{$request->get('status')}");
                }
            })
            ->make();
        }catch(\Illuminate\Database\QueryException $e){
            $array = array(
                'mensaje' => $e->getMessage(),
                'codigo' => $e->getCode(),
                'sql' => $e->getSql(),
                'bindings' => $e->getBindings(),
            );
            return Response::json(array('ErrorSql' => $array));
        }
    }

    public function crear(Request $req) {
        $rules = array(
            'nombre' =>  'required|unique:cargos|min:5|max:30',
        );
        $validator = Validator::make ( Input::all (), $rules );
        if ($validator->fails()){
            return Response::json(array('errors' => $validator->getMessageBag()->toArray()));
        }else{
            try{
                $cargos = new Marcas();
                $cargos->nombre = $req->nombre;
                $cargos->status = 't';
                $cargos->save();
                return Response::json(array('correcto' => $cargos->toArray()));
            }catch(\Illuminate\Database\QueryException $e){
                $array = array(
                    'mensaje' => $e->getMessage(),
                    'codigo' => $e->getCode(),
                    'sql' => $e->getSql(),
                    'bindings' => $e->getBindings(),
                );
                return Response::json(array('ErrorSql' => $array));
            }
        }
    }

    public function editar(Request $req){
        $rules = array(
            'nombre' =>  'required|min:5|max:30',
        );
        $validator = Validator::make ( Input::all (), $rules );
        if ($validator->fails()){
            return Response::json(array('errors' => $validator->getMessageBag()->toArray()));
        }else{
            try{
                if(Marcas::where('nombre', 'ilike', $req->nombre)->where('id', '', $req->id)->exists()){
                    return Response::json(array('encontrado' => 'nombre ya ha sido registrado'));
                }else{
                    $cargos = Marcas::find ($req->id);
                    $cargos->nombre = $req->nombre;
                    $cargos->save();
                    return Response::json(array('correcto' => $cargos->toArray()));
                }
            }catch(\Illuminate\Database\QueryException $e){
                $array = array(
                    'mensaje' => $e->getMessage(),
                    'sql' => $e->getSql(),
                    'bindings' => $e->getBindings(),
                );
                return Response::json(array('ErrorSql' => $array));
            }
        }
    }

    public function eliminar(Request $req){
        try{
            Marcas::find($req->id)->delete();
                $array = array(
                    'mensaje' => 'todo bn',
                );
                return Response::json(array('correcto' => $array));
        }catch(\Illuminate\Database\QueryException $e){
            if($e->getCode()==23503){
                $array = array(
                    'mensaje' => $e->getMessage(),
                    'sql' => $e->getSql(),
                    'bindings' => $e->getBindings(),
                );
                return Response::json(array('ClaveForanea' => $array));
            }else{
                $array = array(
                    'mensaje' => $e->getMessage(),
                    'sql' => $e->getSql(),
                    'bindings' => $e->getBindings(),
                );
                return Response::json(array('ErrorSql' => $array));
            }
        }
    }

Как я читаю в этой статье: ссылка говорит, что там мы определяем, что мы можем изменять поля, удалять, и т.д. Но я ни в моделях Laravel ни них не касаюсь и все проходит меня хорошо.

Который делают действительно модели в laravel.

3
задан 02.05.2017, 18:12
0 ответов

Ты находишь ответ на вопрос в файле: Illuminate\Database\Eloquent\Model, анализируя каждое свойство и каждый метод ты можешь делать себе мысль из, зачем он подает модель, и когда иметь один или не для таблицы.

В общем с моделью в Laravel ты можешь:

  • Устанавливать параметры взаимодействия с соответствующей таблицей в базе данных (имя, ключи, защищенные поля, и т.д.)
  • Устанавливать связи с другими подмостками, чтобы мочь предзагружать такую вышеупомянутую информацию как свойство каждой модели (возможно функция самая важная из всех, и которая больше времени может избавлять от нас)
  • Реализовывать некие простые и типичные задания, как сохранение, получать все реестры, удалять, и т.д.
  • Использовать "Эахер Лоадинг", полезное достаточно во многих ситуациях
  • Стрелять в события
  • Манипулировать пагинацией

Между столькими другими функциями, которые ты можешь видеть в файле в упоминании.

Конечно, сложные консультации, которые ты нуждаешься в том, чтобы сделать в базу данных, не были бы должны быть реализованными ни с драйвера (это не Ваша ответственность) ни в модели, для этого ты можешь использовать предпочтительно хранилище.

6
ответ дан 03.12.2019, 17:40

Ну, я это использую, чтобы манипулировать с этой точки моей базой данных. Я дам тебе пример с Model и это объясню...

use Illuminate\Database\Eloquent\Model;
use Cviebrock\EloquentSluggable\Sluggable;
use Cviebrock\EloquentSluggable\SluggableScopeHelpers;
use Carbon\Carbon;
class Articulo extends Model{
use Sluggable, SluggableScopeHelpers;

/**
 * Return the sluggable configuration array for this model.
 *
 * @return array
 */
public function sluggable()
{
    return [
        'slug' => [
            'source' => 'titulo'
        ]
    ];
}
 protected $table = 'articulos';

/**
 * The attributes that are mass assignable.
 *
 * @var array
 */
protected $fillable = ['titulo', 'contenido','slug','path','etiqueta','user_id','categoria_id'];

public function setPathAttribute($path){
    if(! empty($path)){
        $name = Carbon::now()->second.$path->getClientOriginalName();
        $this->attributes['path'] = $name;
        \Storage::disk('local')->put($name, \File::get($path));
    }
}



public function categoria(){
    return $this->belongsTo('Blog\Categoria');
}

public function user(){
    return $this->belongsTo('Blog\User');
}

public function scopeTitulo($query, $titulo){//Funcion para hacer una busqueda 
    if(trim($titulo) != ''){ //Funcion trim para eliminar los espacios
        $query->where(\DB::raw("titulo"),"LIKE","%$titulo%");
    }


}
}

В этой модели я имею sluggable Эта функция - часть eloquent, который подает меня для того, чтобы во время сохранения какого-то post мы сказали, и титул был немного, как "Восток - мой первый post" sluggable это сохраняет в моей базе данных как "Этот-es-mi-primer-post" и так работает более чистой формы и лучшего вида соединение

Функция setPathAttribute я использую ее для того, чтобы после того, как сохранял изображения, они не сохраняли с повторенным именем

Функции categoria и user я связываю их каким-то образом с этой моделью или таблицей Articulo и потом в час в моем драйвере или в моем коде HTML мочь использовать что-то из моих связей между подмостками благодаря этому

и в конце концов scopeTitulo это простая поисковая служба...

Все это внутри моего Model и помогает мне решать много вещей внутри моей Базы данных.

1
ответ дан 03.12.2019, 17:40
  • 1
    и это не что-то, что может делаться с драйвера? это что-то q нужно делать, как ты это делаешь? или это что-то подлежащее обсуждению? –  15.01.2017, 03:01
  • 2
    Ясно, что он подлежащий обсуждению, но в которое я иду, он в следующее, во что эти функции, во что está n ahí они должны заниматься с Model, хорошим является то, что я понимаю, и говорю обо всех, но serí в вопрос пробования, но функции categorí в и user, если они должны идти ahí и ты можешь искать в documentació n Laravel. –  15.01.2017, 03:15
  • 3
    эти функции, что ты работаешь в Model пламя? или они работают automá ticamente, когда enví схвати что-то в BD? –  15.01.2017, 03:52
  • 4
    В той Scope ты посылаешь поисковую службу funció n вызов " titulo" и buscará внутри Model немного, который начинался бы с scope и который говорил бы " scopeTitulo" и hará то, что ты просишь у него, и enviará куда он был должен посылать это. –  15.01.2017, 06:21