نوب
3 سال پیش توسط نوب مطرح شد
5 پاسخ

سوالات مبهم من در لاراول

سلام
سوال اول : چطور میتونم محتویات یک جدول را (مثلا جدول setting) را در کل پروژه فراخونی کنم و بتونم از موارد داخل اون جدول در کل سایت به راحتی استفاده کنم ؟

سوال دوم : فرض کنین یه جدول user_log داریم که میخوایم کاربران پس از هربار ورود و خروج اطلاعات ip و زمان ورود و خروجشون داخلش ذخیره بشه / این کار را چطور انجام بدیم ؟

سوال سوم : فرض کنین که فیلدهای پروفایل کاربر در 3 جدول جداگانه ذخیره میشه و میخوایم که وقتی کاربر روی دکمه ویرایش فرم زد هر 3 جدول بر اساس فیلدها همزمان آپدیت بشن / این کار را چطور انجام بدیم ؟

سوال چهارم : بهتر است برای بررسی ورود کاربران از Gate استفاده کنیم یا خودمون Middleware درست کنیم ؟

سوال پنجم : چرا وقتی من جداول را به صورت کد زیر migrate میکنم و به صورت دستی مثلا توی جدول user_log آیدی کاربر را میزنم و بعدش از جدول users اون کاربر را پاک میکنم توی جدول واسط user_log اطلاعاتش پاک نمیشه ؟

public function up()
    {
        Schema::create('user_log', function (Blueprint $table) {
            $table->id();
            $table->integer('user_id')->unsigned();
            $table->string('ipAddress', 20)->nullable();
            $table->string('browser', 522);
            $table->timestamps();
            $table->foreign('user_id')
                ->references('id')
                ->on('users')
                ->onDelete('cascade')
                ->onUpdate('cascade');
        });
    }

ثبت پرسش جدید
علی بیات
تخصص : توسعه دهنده ارشد وب
@ali.bayat 3 سال پیش مطرح شد
3

درود

به نظرم اگر سوال هات رو تو چند گفتگو تقسیم می‌کردی، جواب های کامل تری میگرفتی
اما در هر صورت

۱. سرویس پروایدرهای لاراول قبل از سایر قسمت ها لود میشند.. پس میتونی توی یک Service Provider کوئری بزنی و جدول settings رو داخل cache یا حتی بهتر توی Redis قرار بدی و در سایر جاها ازش استفاده کنی.
فقط دقت کن اگر کوئری سنگینی در این قسمت بگذاری روی پرفرمنس اپلیکیشن اثر میذاره

۲. میتونی توابع مربوط به login و logout رو در پروژه پیدا کنی و در اون قسمت لاگ مربوطه رو ذخیره کنی
سری به LoginController بزن و تِریت AuthenticatesUsers رو دنبال کن

۴.

بهتر است برای بررسی ورود کاربران

اگر منظورت احراز هویت هست، اصلا احتیاجی به Gate نداری.. خود لاراول این کار رو انجام میده
مبحث Authentication رو با Authorization قاطی نکن
برای Authorization یا مجازسازی کاربران هست که میشه از Policy ها استفاده کرد که Policy ها هم در نهایت از Gate بهره میبرند

۵. دلایل مختلفی میتونه داشته باشه. انجین دیتابیس رو چک کن و ببین Foreign Key Constrain ها غیر فعال نباشند


رضا پارسیان
تخصص : توسعه دهنده Php , Laravel
@Rp76 3 سال پیش مطرح شد
0

سلام.
فقط سوال ۲ رو جواب میدم
توی لاراول یکسری فایل ها هستند به اسم middleware که قبل از هرچیزی اینها اجرا میشوند. میتونی ازشون کمک بگیری لاگ رو بنویسی.


مهدی مهدوی
تخصص : تازه وارد
@mehdi.mahdavi97 3 سال پیش مطرح شد
-2

سلام
همانطور که دوستان اشاره کردند قطعا باید اعتبار سنجی نهایی در سمت سرور انجام بشه
ولی جهت کاهش درخواست های نامعتبر به سمت سرور (کاهش بار اضافی روی سرور ) از جاوا اسکریپت هم استفاده بشه خیلی خوبه


نوب
تخصص : کدنویس نوب :)
@yk5742g 3 سال پیش مطرح شد
0

@ali.bayat
سلام آقای بیات
لطفا اگر امکانش هست به سوالهایی که بالا پرسیدم پاسخ بدید
پاسخ سوال 3 را خودم پیدا کردم
ولی بقیه را نمیدونم


bahman x
@bahmanroocket 3 سال پیش مطرح شد
-1

ممکن پاسخ ها من کاملا درست نباشه ولی خب چیزی که به ذهنم رسیدرو میگم.
سوال یک : من خودم یک سری اطلاعات محدود basic رو اگه بخوام اغلب جاهای پروژه و داخل فایل های view و blade استفاده کنم اون اطلاعات رو هنگام login از database داخل session ذخیره میکنم. مثل firstName lastName cityName و غیره. در غیر این صورت باید هر دفعه اطلاعات رو از دیتابیس بگیرید.

سوال دو: log های کاربران رو اصولا داخل database ذخیره نمیکنن به خاطر سرعت پایین دیتابیس .مگر در استثنا هایی مثل ثبت تاریخ آخرین ورود.اون هم برای مدیریت api restfull. اطلاعات لاگ رو داخل فایل ذخیره میکنند.و برای این میتونید از سیستم لاگ خود لاراول استفاده کنید.
سوال چهارم : منظورتون از بررسی لاگ گرفتنه یا احراز هویت؟
سوال پنجم: باید کد جدول user رو هم قرار بدید ببینم. ولی من خودم به شخصه برای تعریف id از کد زیر استفاده میکنم

$table->unsignedBigInteger('userId', true);

نوع تایپ id باید با کلید خارجیش یکی باشه یعنی کلید خارجی هم unsignedBigInteger باشه.


علی بیات
تخصص : توسعه دهنده ارشد وب
@ali.bayat 3 سال پیش مطرح شد
3

درود

به نظرم اگر سوال هات رو تو چند گفتگو تقسیم می‌کردی، جواب های کامل تری میگرفتی
اما در هر صورت

۱. سرویس پروایدرهای لاراول قبل از سایر قسمت ها لود میشند.. پس میتونی توی یک Service Provider کوئری بزنی و جدول settings رو داخل cache یا حتی بهتر توی Redis قرار بدی و در سایر جاها ازش استفاده کنی.
فقط دقت کن اگر کوئری سنگینی در این قسمت بگذاری روی پرفرمنس اپلیکیشن اثر میذاره

۲. میتونی توابع مربوط به login و logout رو در پروژه پیدا کنی و در اون قسمت لاگ مربوطه رو ذخیره کنی
سری به LoginController بزن و تِریت AuthenticatesUsers رو دنبال کن

۴.

بهتر است برای بررسی ورود کاربران

اگر منظورت احراز هویت هست، اصلا احتیاجی به Gate نداری.. خود لاراول این کار رو انجام میده
مبحث Authentication رو با Authorization قاطی نکن
برای Authorization یا مجازسازی کاربران هست که میشه از Policy ها استفاده کرد که Policy ها هم در نهایت از Gate بهره میبرند

۵. دلایل مختلفی میتونه داشته باشه. انجین دیتابیس رو چک کن و ببین Foreign Key Constrain ها غیر فعال نباشند


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

ورود یا ثبت‌نام