Diferència entre revisions de la pàgina «NF2 - Framework Laravel»

De wikiserver
Dreceres ràpides: navegació, cerca
(=RUTAS BÁSICAS)
Línia 198: Línia 198:
 
</source>
 
</source>
  
 +
 +
 +
'''CRUD'''
 +
 +
Creas la tabla
 +
 +
php artisan make:migration create_blogs_table --create=blogs
 +
 +
 +
Luego en la migración creas los campos para la base de datos
 +
 +
<source lang="php">
 +
Schema::create('blogs', function (Blueprint $table) {
 +
$table->bigIncrements('id');
 +
$table->string('blog_title');
 +
$table->text('blog_content');
 +
$table->timestamps();
 +
});
 +
 +
</source>
 +
 +
Generas las rutas insertando el fichero Web
 +
 +
<source lang="php">
 +
 +
Route::resource('blogs','blogController');
 +
 +
//Para listar las rutas, en terminal
 +
 +
php artisan route:list -v
 +
</source>
 +
 +
Creamos el modelo
 +
<source lang="php">
 +
php artisan make:model Blog
 +
 +
//dentro del modelo
 +
class Blog extends Model
 +
{
 +
protected $fillable = ['blog_title', 'blog_content'];
 +
 +
//¿Qué atributos deberías incluir en dicho array?
 +
 +
//Aquellos que consideres sensibles y que no deberían modificarse o asignarse en cierta forma, el más típico es el id, el cual normalmente no se modifica ni se asigna de forma manual.
 +
}
 +
 +
</source>
 +
 +
Creamos Controlador
  
 
<source lang="php">
 
<source lang="php">
 +
php artisan make:controller blogController --resource
 +
1.index()
 +
 +
2.create()
 +
 +
3.store()
 +
 +
4.show()
 +
 +
5.edit()
 +
 +
6.update()
 +
 +
7.destroy()
 
</source>
 
</source>
 +
https://www.expertsphp.com/laravel-6-crud-create-read-update-delete-generator-for-beginners-with-example/
 +
<source lang="php">
  
 +
</source>
 +
 +
<source lang="php">
 +
 +
</source>
  
 
<source lang="php">
 
<source lang="php">
 +
 
</source>
 
</source>
 +
  
 
<source lang="php">
 
<source lang="php">
 +
 
</source>
 
</source>
 +
  
 
<source lang="php">
 
<source lang="php">
 +
 
</source>
 
</source>

Revisió del 14:18, 1 nov 2019

ESTRUCTURA DIRECTORIOS

=RUTAS BÁSICAS

Dentro de Routers->Web

Route::get('mundo', function () {
    return 'Hello World';
});

Creamos un controlador vacio, App->http->Controller->

php artisan make:controller MoviesController --plain
en route
Route::get('/ejemplo', 'PeliculasController@index');
en controlador
public function index(){

echo "hola Julio";

}


//verbos HTTP múltiples
Route::match(['get', 'post'], '/', function () {
    //
});

//verbos HTTP cualquiera
Route::any('/', function () {
    //
});


//dentro de la misma vista
Route::get('/show/{id?}',function($id="122"){

    return $id;
    
    })->name('show');


Route::get('/par-o-impar-{numero}',function($numero){    // no hace falta usar '/'

return $numero;

//return redirect()->to('/show/3');  -> te redirije a la ruta que le indicas 
//return redirect()->route('show')  -> te redirije a la ruta que tiene el nombre asignado en el name.
//return redirect()->route('show',['id' => '222'])  -> en caso de pasarle algun parámetro
} )->where(['number' => '[\d]+']);    // de esta forma añadimos una expresion regular para que solo puedan introducir numeros


Route::get('user/{name?}', function ($name = 'John') {  //$name=null
    return $name;
});

Restricciones con Expresiones Regulares

Route::get('user/{name}', function ($name) {
    //
})->where('name', '[A-Za-z]+');   //nomes poden passar lletres miníscules o Majúscules como mínim una volta 

Route::get('user/{id}', function ($id) {
    //
})->where('id', '[0-9]+');

Route::get('user/{id}/{name}', function ($id, $name) {
    //
})->where(['id' => '[0-9]+', 'name' => '[a-z]+']);   //le pasamos un array en caso de más de un elemento.


Route::group(['prefix'=>'admin'],function(){  // en el navegador puedes poner /admin/modificar-usuario  o  /admin/insertar-usuario
    
    Route::get('modificar-usuario',function(){

    return "modifica usuario";

    });


    Route::get('insertar-usuario',function(){

    return "insertar usuario";

    });

});

RELACIONES

Se deben de hacer las relaciones de la base de datos en las migraciones y también en los modelos para facilitar a Eloquent las consultas.

Relaciones Uno a Muchos Migraciones

un usuario tiene muchos post y un post lo tiene un usuario

//tabla Categories
  Schema::create('categories', function (Blueprint $table) {
            $table->increments('id')->unsigned();
            $table->text('nombre');
            $table->mediumText('masInfo');
            $table->timestamps();
        });

//tabla Posts


    Schema::create('posts', function (Blueprint $table) {
            $table->increments('id')->unsigned();
            $table->integer('category_id')->unsigned();
            $table->text('titulo');
            $table->mediumText('descripcion');
            $table->timestamps();
            //relaciones
            $table->foreign('category_id')->references('id')->on('categories')->onDelete('cascade')->onUpdate('cascade');
            //category_id hace referencia a la tabla categories y el borrado y la actualización es en cascada.
        });


Para las relaciones NxM Muchos a Muchos. Un post puede tener muchas Etiquetas y una etiqueta puede tener muchos Posts, por tanto habrá que crear una tabla auxiliar.

//Tabla Post
 Schema::create('posts', function (Blueprint $table) {
            $table->increments('id');

           // $table->integer('user_id')->unsigned();
           // $table->integer('category_id')->unsigned();
            
            $table->string('name',128)->unique();
            $table->string('slug',128)->unique();

            $table->mediumText('excerpt')->nullable();
            $table->text('body');
            $table->enum('status',['PUBLISHED','DRAFT'])->default('DRAFT');

            $table->string('file', 128)->nullable();

            $table->timestamps();

            //relaciones
            //$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade')->onUpdate('cascade');
            //$table->foreign('category_id')->references('id')->on('categories')->onDelete('cascade')->onUpdate('cascade');

        });

//tabla Tags

Schema::create('tags', function (Blueprint $table) {
            $table->increments('id');

            $table->string('name',128);
            $table->string('slug',128)->unique();

            $table->timestamps();
        });


//tabla auxiliar

  Schema::create('post_tag', function (Blueprint $table) {
            $table->increments('id');

            $table->integer('post_id')->unsigned();
            $table->integer('tag_id')->unsigned();

            $table->timestamps();

             //relaciones
             $table->foreign('post_id')->references('id')->on('posts')->onDelete('cascade')->onUpdate('cascade');
             $table->foreign('tag_id')->references('id')->on('tags')->onDelete('cascade')->onUpdate('cascade');
 
        });


CRUD

Creas la tabla

php artisan make:migration create_blogs_table --create=blogs


Luego en la migración creas los campos para la base de datos

Schema::create('blogs', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('blog_title');
$table->text('blog_content');
$table->timestamps();
});

Generas las rutas insertando el fichero Web

Route::resource('blogs','blogController');

//Para listar las rutas, en terminal 

php artisan route:list -v

Creamos el modelo

php artisan make:model Blog

//dentro del modelo 
class Blog extends Model
{
protected $fillable = ['blog_title', 'blog_content'];

//¿Qué atributos deberías incluir en dicho array?

//Aquellos que consideres sensibles y que no deberían modificarse o asignarse en cierta forma, el más típico es el id, el cual normalmente no se modifica ni se asigna de forma manual.
}

Creamos Controlador

php artisan make:controller blogController --resource
1.index()

2.create()

3.store()

4.show()

5.edit()

6.update()

7.destroy()

https://www.expertsphp.com/laravel-6-crud-create-read-update-delete-generator-for-beginners-with-example/