За последние 24 часа нас посетили 17914 программистов и 1569 роботов. Сейчас ищут 1293 программиста ...

Не отрабатывает hasMany

Тема в разделе "Laravel", создана пользователем mstdmstd, 19 ноя 2017.

  1. mstdmstd

    mstdmstd Активный пользователь

    С нами с:
    28 фев 2010
    Сообщения:
    83
    Симпатии:
    1
    Всем привет,

    В Laravel 5.5 имея 2 таблицы бизнесы и типов бизнеса
    business_types и businesses есть еще одна таблица business_business_types - каждый бизнес может иметь несколько типов бизнеса и
    business_business_types определена как
    Код (Text):
    1. Schema::create('business_business_types', function (Blueprint $table) {
    2.     $table->bigIncrements('id');
    3.  
    4.     $table->bigInteger('business_id')->unsigned();
    5.     $table->foreign('business_id')->references('id')->on('businesses')->onDelete('RESTRICT');
    6.  
    7.     $table->enum('status', ['N', 'A', 'I']) ->comment('N => New(Waiting for activation), A=>Active, I => Inactive');
    8.  
    9.     $table->integer('business_types_id');
    10.     $table->foreign('business_types_id')->references('id')->on('business_types')->onDelete('RESTRICT');
    11.  
    12.     $table->dateTime('created_at');
    13.  
    14.     $table->index(['status'], 'business_business_types_status_index');
    15.     $table->unique(['business_id', 'business_types_id'], 'business_business_types_business_id_business_types_id_unique');
    16.     $table->index(['created_at'], 'business_business_types_created_at_index');
    17. });
    И в модели app/Business.php есть метод :

    Код (Text):
    1. public function businessBusinessTypes() {
    2.     echo '<pre>hasMany businessBusinessTypes::'.print_r(113490,true).'</pre>'; // ЭТА СТРОКА ВЫВОДИТСЯ
    3.     return $this->hasMany('App\BusinessBusinessType'/*, 'business_id','id'*/ );
    4. }
    Вызываю в контроле :

    Код (Text):
    1. $business= Business::findOrFail($business_id);
    2. echo '<pre>$business::'.print_r($business,true).'</pre>';
    3. $businessBusinessTypesList= $business->BusinessBusinessTypes();
    4. foreach( $businessBusinessTypesList as $next_key=>$nextBusinessBusinessType ) { // Цикла нет хотя в базе данные есть
    5.     echo '<pre>$nextBusinessBusinessType::'.print_r($nextBusinessBusinessType,true).'</pre>';
    6. }
    В sql-логах вижу только :
    Код (Text):
    1. select * from "cs_businesses" where "cs_businesses"."id" = '3' limit 1
    То есть это вызов findOrFail. Больше ничего нет.


    Я полагал что метод BusinessBusinessTypes сгенерит запрос вида:
    Код (Text):
    1. select * from "cs_business_business_types" where "cs_business_business_types"."business_id" = '3'
    Что не так ?

    Спасибо!
     
  2. romach

    romach Старожил

    С нами с:
    26 окт 2013
    Сообщения:
    2.904
    Симпатии:
    719
  3. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.583
    Симпатии:
    1.761