Php Elevely处理从代码中不同位置出现的非对象错误的属性
我的应用程序从另一个API编写的数据库读取数据,现在在一些奇怪的情况下(今天实际发生的情况),它编写了一个0的客户Php Elevely处理从代码中不同位置出现的非对象错误的属性,php,laravel,error-handling,Php,Laravel,Error Handling,我的应用程序从另一个API编写的数据库读取数据,现在在一些奇怪的情况下(今天实际发生的情况),它编写了一个0的客户id,当然,这是不存在的 我正在寻找一个优雅的“从顶部”模型,甚至是演示者解决方案来处理不存在的错误ID 因此,我不是在我的应用程序中查找每个$whatever->customer->id,然后在isset()/empty()三元函数中写入,而是希望以一种更优雅的方式消除这个错误,任何customer实例化/雄辩对象都会将字符串“NA”发送到一个不存在的对象,因此,即使是email/
id
,当然,这是不存在的
我正在寻找一个优雅的“从顶部”模型,甚至是演示者解决方案来处理不存在的错误ID
因此,我不是在我的应用程序中查找每个$whatever->customer->id,然后在isset()
/empty()
三元函数中写入,而是希望以一种更优雅的方式消除这个错误,任何customer
实例化/雄辩对象都会将字符串“NA”发送到一个不存在的对象,因此,即使是email/phone/etc或客户模型的任何其他列,它也会返回一个简单的“NA”字符串
我正在努力寻找一个雄辩的解决方案,提供1个改变点我建议您看看大多数人不知道的Laravel类。就是 它允许您执行以下操作:
$fluent = new Fluent([
'one' => 1,
'two => 2,
]);
echo $fluent->get('one'); // returns 1
echo $fluent->get('three'); // returns null
echo $fluent->get('three', 3); // returns 3
正如您所想象的,它非常适合与第三方API和数据一起使用,这些API和数据有时会提供意想不到的结果。你也可以用Fluent做更多的事情
或者,您可以查看Laravel帮助程序,例如array\u get()
。从:
array\u get
函数使用“点”表示法从深度嵌套的数组中检索值:
$array = ['products' => ['desk' => ['price' => 100]]];
$price = array_get($array, 'products.desk.price');
// 100
array\u get
函数也接受默认值,如果找不到特定的键,将返回该值:
$discount = array_get($array, 'products.desk.discount', 0);
// 0
我建议你去看看大多数人都不知道的Laravel课程。就是 它允许您执行以下操作:
$fluent = new Fluent([
'one' => 1,
'two => 2,
]);
echo $fluent->get('one'); // returns 1
echo $fluent->get('three'); // returns null
echo $fluent->get('three', 3); // returns 3
正如您所想象的,它非常适合与第三方API和数据一起使用,这些API和数据有时会提供意想不到的结果。你也可以用Fluent做更多的事情
或者,您可以查看Laravel帮助程序,例如array\u get()
。从:
array\u get
函数使用“点”表示法从深度嵌套的数组中检索值:
$array = ['products' => ['desk' => ['price' => 100]]];
$price = array_get($array, 'products.desk.price');
// 100
array\u get
函数也接受默认值,如果找不到特定的键,将返回该值:
$discount = array_get($array, 'products.desk.discount', 0);
// 0
您可以对您的关系使用
with default()
修饰符
例如:
use Illuminate\Database\Eloquent\Model;
class Whatever extends Model {
public function customer() {
return $this->belongsTo(Customer::class, 'customer_id', 'id')
->withDefault([
'id' => 'NA',
'name' => 'Unknown'
// etc
]);
}
}
您可以对您的关系使用
with default()
修饰符
例如:
use Illuminate\Database\Eloquent\Model;
class Whatever extends Model {
public function customer() {
return $this->belongsTo(Customer::class, 'customer_id', 'id')
->withDefault([
'id' => 'NA',
'name' => 'Unknown'
// etc
]);
}
}