Ecto چطور شروط Changeset و معرفی فیلد های دیتابیس را مدیریت می کند

با درود خدمت شما . من کمی کد های Ecto رو دیدم خیلی از بخش هاش مثل اینکه ماکرو درست شده و داره این کارارو می کنه و هرچی گشتم ماکرو رو پیدا نکردم

من نیاز دارم به زبون ساده قطعه کدی رو پیدا کنم که بگه چطور Ecto داره این کارو می کنه
چطور داره تو changeset پارامتر هارو چک می کنه و یا کاربر وقتی می گه null نباشه در کجا این کد تشخیص می ده

قضیه از اینجا شروع می شه که من یک پستی به جوملا زدم که چرا امکاناتی رو به ORM جوملا اضافه نمی کنید. چرا هیج جایی نیست که ارور خوب تحویل بده و ما باید کد های زیادی بزنیم و حالا می خوام بخش هایی از کد های الکسیر رو نشون بدم بهشون

این خیلی به جوملا مربوط نیست بلکه به validation در php
در php هم orm وجود داره که validation شبیه ecto انجام میده شما ببین میتونی orm های php در جوملا اضافه کنی

1 پسندیده

درود سام عزیز . چون جوملا ORM خودشو داره و نمی دونم چرا چند ساله تغییر نکرده . واقعیت امر اینکه من گشتم ORM خوبی پیدا نکردم که مراحلی مثل Ecto داشته باشه

حتی یک پستی هم در این رابطه قبلا در انجمن زدم. مطمئنن اگر ORM خوبی می تونستم پیدا کنم سعی می کنم از اون استفاده کنم . البته می دونم که در مدل جوملا دچار مشکل می شم ولی آزمون کردنش هم خوبه حتی باعث می شه من بتونم اون ORM رو به جوملا پیشنهاد کنم .

شما چیزی مدنظرتون هست ؟

Laravel Eloquent شنیدم خوبه ولی من سالهاست با php کار نکردم نمی‌دونم

1 پسندیده

مثل اینکه خیلی ها دوست داشتن اینو بیرون لاراول استفاده کنند پست هایی تو اینترنت هست ازش

ممنون سام عزیز تست می کنم ببنیم می تونم بیارمش توی MVC جوملا یا خیر

همینطور توی اون ایشویی که درست کردم به جوملا قطعه کدی ازش رو هم نشون دادم

Capsule::schema()->create('todos', function ($table) {

       $table->increments('id');

       $table->string('todo');

       $table->string('description');

       $table->string('category');

       $table->integer('user_id')->unsigned();

       $table->timestamps();

       $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');

   });

در آخر دعوت می کنم به جواب سازنده جوملا

We’re working on our own ORM in J4 - WIP at https://github.com/joomla-projects/entities
Given this post is largely just advertising other frameworks I’m going to close this. If you want to bring up specific issues about the orm - please do so in the entity repo
https://github.com/joomla/joomla-cms/issues/20941

با این یکی چطور

انگار خودت اشاره کردی، اما فکر نمیکنم چیزی بهتر از doctrine پیدا کنی

1 پسندیده

Eloquent از لاراول ۴ به صورت یک بسته جداگانست و نیازی به لارول نداره

1 پسندیده

درود توماج جان. فکر کنم لاراول هم از این استفاده می کنه . من اینو دیده بودم . بعد کمی در داکیومنتش گشتم . دیدم مثلا برای بخش مشخص کردن نوع هر پارامتر به صورت گتر و ستر عمل کرده . ولی دیدم پکیجی که تو لارول استفاده می شه خیلی ساده تر رفته جلو

Capsule::schema()->create('todos', function ($table) {

       $table->increments('id');

       $table->string('todo');

       $table->string('description');

       $table->string('category');

       $table->integer('user_id')->unsigned();

       $table->timestamps();

       $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');

   });

بعد در قسمت بعدی داکیومنت دیدم که برای فراخوانی مثلا داده ای یا … تقریبا باید باز sql خام زد

public function getUsersBugs($userId, $number = 15)
    {
        $dql = "SELECT b, e, r FROM Bug b JOIN b.engineer e JOIN b.reporter r ".
               "WHERE b.status = 'OPEN' AND e.id = ?1 OR r.id = ?1 ORDER BY b.created DESC";

        return $this->getEntityManager()->createQuery($dql)
                             ->setParameter(1, $userId)
                             ->setMaxResults($number)
                             ->getResult();
    }

ولی این مورد توی پکیج لاراول ساده تره

require "bootstrap.php";

$user = User::Create([    'name' => "Kshiitj Soni",    'email' => "[email protected]",    'password' => password_hash("1234",PASSWORD_BCRYPT), ]);

print_r($user->todo()->create([

   'todo' => "Working with Eloquent Without PHP",

   'category' => "eloquent",

   'description' => "Testing the work using eloquent without laravel"

   ]));

به همین منظور گفتم این ممکنه بهتر باشه برای من که خیلی وقته فاصله گرفتم از دیگر زبان ها

بسیار خب, من دقیقا نمیدونم چرا در لاراول ساده تر بنظر میاد اما میتونم حدس بزنم که بین Laravel و Eloquent یک سری helper یا abstraction وجود داره

1 پسندیده