Jump to content
php.lv forumi

Recommended Posts

Posted

Ģenerators ir figņa, tādu var izmantot tikai, kad nāk klāt pavisam jauni modeļi. Cik relācijas esmu licis, tik visas ir bijušas klāt esošiem modeļiem, kur jāraksta viss ar roku.

 

Kaut kāds ģenerators neattaisno to, ka ir sūdīga dokumentācija.

  • Replies 57
  • Created
  • Last Reply

Top Posters In This Topic

Posted (edited)
Ģenerators ir figņa, tādu var izmantot tikai, kad nāk klāt pavisam jauni modeļi. 

 

Ne gluži, ģenerators tīri smuki updeito esošos modeļus ja mainījusies shēma, tikai protams modeļi ir jāsadala divās klasēs kur base klase ir ģenerētā un derived klase ir tā kur liec savu custom kodu. 

Edited by Blitz
Posted

Kaut kāds ģenerators neattaisno to, ka ir sūdīga dokumentācija.

 

Acīmredzot, Tu vēl ar Magento neesi strādājis ;)

Posted

Kā jūs darāt - veidojat shēmu db un tad ģenerējat modeļus? Kā tādā veidā var, piemēram, specifiskus laukus kā json, array, class, utml. norādīt?

Posted

 

 

specifiskus laukus kā json, array, class

 

Domā db laukus vai modeļa propertijus? Ja modeļa propertijus tad šādus definē derived modelī ar rokām, base modelis ir pliks mapperis (entity?) pret db.

Posted

Jā, modeļa lauku un attiecīgo db tabulas lauku. Jautājums vairāk par to, kuru definē pirmo un kuru ģenerē.

Tā kā dēļ šiem specifiskiem laukiem, modelis ir augstāku abstrakcijas pakāpi, tad tā vai tā sanāk, ka jādefinē ir modelis no kura ģenerē db shēmu, nevis otrādi.

Teiksim, man Scalā ar Slick ir šāds princips - definēju modeļa lauku, kuriem automātiski tiks uzģenerēta shēma.

Standarta lauki:

def id = column[Long]("id")
def name = column[String]("name")

Bet varu laukam izvēlēties arī tipu pilnīgi brīvi:

def json = column[JsObject]("json")
def customClass = column[MyClass]("myclass")
def standartContainer = column[Map[String, String]]("map")
utt.

Tālāk, man vajadzīgs tikai definēt kāds būs maperis starp modeļa lauku un db kolonnu, kas standarta datu struktūrām ir automātiski.

Mans sākotnējais komentārs bija vairāk par to, ka beigu beigās tik un tā izdevīgāk ir definēt modeli un ģenerēt db shēmu, nevis otrādi.

Posted

Ja ir īstie rīki tad droši vien ka ērtāk ir veidot modeļus vispirms, Yii gadījumā jaiztiek ar database first, bet toties nav jāčakarējas ar mapošanu un relācijām.

Posted

Ja ir īstie rīki tad droši vien ka ērtāk ir veidot modeļus vispirms, Yii gadījumā jaiztiek ar database first, bet toties nav jāčakarējas ar mapošanu un relācijām.

Man gan škiet, ka DB vieglāk izveidot izmantojot SQL tūļus. Saliek arī relācijas.

Tāpat arī labojumus. Tiek izveidots SQL skripts, kuru iekopē migrācijas failā. Pec tam pārģenerēju modeļus, uz kuriem attiecas izmaiņas.

Posted

Joprojām heitojot Yii....

 

$user = Yii::app()->db->createCommand()
    ->select('id, username, profile')
    ->from('tbl_user u')
    ->join('tbl_profile p', 'u.id=p.user_id')
    ->where('id=:id', array(':id'=>$id))
    ->queryRow();
vs
 
$user = DB::table('tbl_user AS u')
->select(['id', 'username', 'profile'])
->join('tbl_profile AS p', 'p.user_id', 'u.id')
->where('id', $id)
->first();
Posted

Paskatieties kā pierakstās where nosacījums:

http://www.yiiframework.com/doc-2.0/yii-db-query.html#where()-detail

 

...un kāda ir Laravel dokumentācija:

http://laravel.com/docs/5.1/queries#where-clauses

 

 

Where in Yii:

->where(['IN', 'id', [1,2,3]);

Laravel:
->whereIn('id', [1,2,3]);

 

(id IN (1, 2, 3)) AND (status = 2) Yii:

->where(['id' => [1, 2, 3], 'status' => 2])

 

Laravel:

->whereIn('id', [1,2,3])->where('status', 2)

 

 

Yii:
$model = User::find()->where('userid > :userid', [':userid' => $userid])->one();
Laravel:
$model = User::where('userid', '>', $userId)->first();
 
 
Yii viss ir kaut kāds samudrīts, Laravel - skaists un elegants.

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