Jump to content
php.lv forumi

laravel eloquent


php newbie

Recommended Posts

Sveiki.

 

Saku apgūt laravel un neko nevaru saprast...

$model = \DB::table($tableName);
$result = $model->get();

Šitais atgriež  masīvu ar objektiem, bet man vajag eloquent collection vai masīvu ar modeļiem lai varētu izsaukt model funkciju...
 

Vai kā uzinicializēt to eloquent no tabulas nosaukuma?

$model = new Eloquent('tablename');


 

Link to comment
Share on other sites

Nē nu dokumentāciju es skatijos un guglejos arī...

Man vajag dabūt datus no kādas random tabulas un lai rezultāts būtu tas eloquent collection. Teiksim funkcija kurai es padodu tabulas nosaukumu.

DB::table($tableName);

neder jo rezultāts ir objektu masīvs on modeļa funkcijas nav pieejamas.

 

Tad mēģināju uzinicializēt to Eloquent:

new Eloquent();

Eloquent::construct();

Arī nesanāca. Un vispār tas eloquent objekts nemeklē datus, kaut tur ir tas visas metodes...
 

$model = new Users();
$model->take(1);
$model->get();

Šitais atgriež visus ierakstus.

 

Tad sapratu ka tā eloquent nemaz nav pareiza klase un ka visi tie where() un tt atgriež QueryBuilder.

 

Nu jau apnika ar šito figņu ņemties un tagad es padodu funkcijai to queryBuild objektu..

$result = My::getTableData(Users::query(), Input::get('page'));

Bet tā arī nepieleca kā uzinicializēt query build objektu no tabulas nosaukuma. PHPStorm neiet dziļumā un pašam slinkums meklēt to sorce un kā tur tā instance tiek uztaisīta

public static function query()
{
    return with(new static)->newQuery();
}


 


 


 

Link to comment
Share on other sites

Kaut ko tu tur smagi jauc.

 

Uztaisi modeļa klasi (id kolonna ir primārā atslēga):

 

class MyModel extends Eloquent {
    protected $table = 'my_table';
}
 
Un tad selektē, piemēram, 10 objektus:
 
$objects = MyModel::where('nosacījums', '=', 'kautkas')->take(10)->get();

foreach($objcets as $v){
   echo $v->id;
}

 

DB klase ir query builderis. Eloquent klase ir modeļiem (kas arī pamatā satur query buileri). Ja gribi modeļus, tad tev arī jāsauc uz tā modeļa selektēšana, nevis DB klasei.

Link to comment
Share on other sites

Bet vai var uztaisīt Builder vai Eloquent klases instanci zinot tabulas identifikatoru?

Man vajag funkciju kurai padot tabulas identifikatoru un tā atgriež datus. Pagaidam ir šāds variants:

public function getTableData($queryBuilder)
{
 
   ...
   return $queryBuilder->get();
}

getTableData(Users::query());

 

Link to comment
Share on other sites

 

Nu uzseto tur kur vajag. Parasti to dara kontroliera metodē.

Route::get('{parametrs1}/{parametrs2}...

function manaMetode($parametr = 'default', $parametrs2 =  'cita vertijba'){

}

bet Route::current()->parameters()  būs tukšs. Vajag lai Route::current()->parameters() būtu defaultas vērtības

 

a nu var setParameter(), bet nu nesmuki

Edited by php newbie
Link to comment
Share on other sites

Ideja bija paginatorā dabūt parametrus un action no request. Tad paginatoram vajadzētu padod tikai lapu skaitu un viss...

$action = Route::currentRouteAction();
$params = Route::current()->parameters();

un tad ģenerēt linkus lapām tikai samainot 'page' parametru.

$params['page'] = $currentPage + 1;
action($action, $arams);

Bet nu labi, padošu tos parametrus no kontroliera:

public function getIndex($page = 1, $sortField = 'name', $sortOrder = 'desc')
{
    $params = compact('page', 'sortField', 'sortOrder');

    ...

    $pagination = View::make('layout.pagination');
 
    $pagination->with('params', $params); 
    $pagination->with('pages', $result['pages']);
    $pagination->with('page', $result['page']);

    ...
Edited by php newbie
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...