у меня есть код, чтобы получить данные и объединить две таблицы, как это:
$loan = Loan::findOrFail( $id )
->join('customers', 'loans.customer_id', '=', 'customers.id')
->join('loans_detail','loans.id','=','loans_detail.loans_id')
->get();
return view( 'loans.detail', compact( [ 'loan' ] ) );
Затем я возвращаю эти данные:
{!! Form::model( $loan, [ 'method' => 'put' ] ) !!}
{!! Form::text( 'payment_type', null, [ 'class' => 'form-control'] ) !!}
но данные (payment_type) не отображаются. Однако, если я удаляю код соединения, появляются данные (payment_type).
есть некоторый другой результат, если я использую dd () для базы данных с таблицей соединений или не использую таблицу данных
с соединительным столом
Builder {#783 ▼
#query: Builder {#782 ▶}
#model: Loan {#779 ▶}
#eagerLoad: []
#localMacros: []
#onDelete: null
#passthru: array:12 [▶]
#scopes: []
#removedScopes: []
}
без соединительного стола
Loan {#779 ▼
#table: "loans"#guarded: []
#connection: "pgsql"#primaryKey: "id"#keyType: "int"+incrementing: true
#with: []
#withCount: []
#perPage: 15
+exists: true
+wasRecentlyCreated: false
#attributes: array:9 [▶]
#original: array:9 [▶]
#changes: []
#casts: []
#dates: []
#dateFormat: null
#appends: []
#dispatchesEvents: []
#observables: []
#relations: []
#touches: []
+timestamps: true
#hidden: []
#visible: []
#fillable: []
}
findOrFail()
уже выполняет запрос, вызывая join()
После этого начинается новый запрос.
Попробуй это:
$loan = Loan::whereKey($id)
->join('customers', 'loans.customer_id', '=', 'customers.id')
->join('loans_detail','loans.id','=','loans_detail.loans_id')
->first();
Кстати: вы должны использовать отношения для этого вида запроса:
https://laravel.com/docs/5.6/eloquent-relationships
Других решений пока нет …