我的代码有问题。
就我而言,我有2张桌子。一个是表A,表A与表B的关系(使用表B中的外部非主列)
在表A中,有一些数据,如:
+----+-------------------+
| id | transcation_number|
+----+-------------------+
| 1 | TR0919231 |
+----+-------------------+
| 2 | TR8123844 |
+----+-------------------+
| 3 | RI8482452 |
+----+-------------------+
表B
+----+------------+---------+
| id | trx_number | status |
+----+------------+---------+
| 1 | TR0919231 | success |
+----+------------+---------+
| 2 | TR8123844 | success |
+----+------------+---------+
在这种情况下,表B中的数据编号3没有关系(此数据编号以RI开头)。数据1和2有关系。当我要显示它时,我希望数据3仍然出现但不联接到表B。数据1,2必须联接到表B。
like:
if tableA has spesific word by 'RI'
then not set any query where
else
then set eloquent query where 'status == success' in tableB column.
对不起,我的坏话和语法。
答案 0 :(得分:0)
这是您可以使用Foreign_key和local_key建立模型关系的方式
class TableA extends Model
{
public function tableB() {
// Assuming the trx_number is the foreign_key that will map with
// transcation_number local_key
return $this->hasOne(TableB::class, 'trx_number', 'transcation_number');
}
}
要了解更多详细信息,请查看Documentation。
答案 1 :(得分:0)
如果没有结果B,口才不应该阻止您获得结果A。但是,如果您想更加确定,则可以延迟加载关系。
关系(放在tableA.php类中):jogesh_pi拥有此权利。
public function tableB() {
return $this->hasOne(TableB::class, 'trx_number', 'transaction_number');
}
延迟加载:
$result = TableA::get();
$result->load('tableB');
有关更多信息,请参阅本文:https://laravel.com/docs/5.8/eloquent-relationships#lazy-eager-loading
基本上,您将从表A中获得所有结果,然后在表B上进行标记,其中关系存在匹配。