Jump to content
php.lv forumi
Zefirs

Būvēt savu vai izmantot kādu CMF?

Recommended Posts

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

Share this post


Link to post
Share on other sites
Ģ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

Share this post


Link to post
Share on other sites

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

 

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

Share this post


Link to post
Share on other sites

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?

Share this post


Link to post
Share on other sites

 

 

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.

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

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();

Share this post


Link to post
Share on other sites

Briedis noteikti Yii piemērā speciāli neizmantoja jauno array sintaksi, lai izskatās briesmīgāk.

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
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...